我试图将DataGridView
链接到数据库中的数据表。我想DataGridView
自动更新数据表(无需点击“保存”或类似的东西)。在我看来,最好的办法是处理RowValidating
事件。我一直在测试这段代码,这是我的问题:假设我通过输入DataGridView
中的最后一个空行来添加行#1(行#1,但不一定是第一行),并输入一些错误的数据(空值或者应该有数字的文本等)。然后我按Enter键,出现一个新的空白行(第2行),没有错误信息。在这个新的行中,我输入了一些其他的数据,不对或不正确,然后再次按Enter键。现在我收到一条错误消息,第1行出现错误消息,但是焦点位于第2行,如果我尝试编辑第1行,我又收到一条错误消息,焦点停留在第2行。我该如何处理?如何解决DataGridView.RowValidating问题
public Form1()
{
InitializeComponent();
sqlCeConnection.Open();
table = new DataTable();
sqlCeDataAdapter = new SqlCeDataAdapter("SELECT * FROM test", sqlCeConnection);
SqlCeCommandBuilder cBuilder = new SqlCeCommandBuilder(sqlCeDataAdapter);
sqlCeDataAdapter.Fill(table);
BindingSource bSource = new BindingSource();
bSource.DataSource = table;
dataGridView1.DataSource = bSource;
}
private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
try
{
sqlCeDataAdapter.Update(table);
}
catch (Exception ex)
{
e.Cancel = true;
MessageBox.Show(ex.Message);
}
}
当您尝试将焦点更改回第1行时,您会收到什么错误消息? – 2010-10-04 05:04:06
无论行#1是什么问题。我在我的帖子中解释了这个错误,并且在我的代码中的'MessageBox.Show(ex.Message);'显示了它。问题不在于错误。问题在于,在添加第2行而不是第1行之后出现错误,即包含该错误的错误。 – Juan 2010-10-04 05:10:43