DataGridView在更新后的第一行显示一些空单元格

时间:2014-11-04 11:56:07

标签: c# winforms datagridview

我的DataGridView绑定到BindingSourceDataSet再次DataSource为其TableAdapterDataSet中的相应Fill具有DataGridView方法,该方法从Access数据库提供数据。我在myTableAdapter.Fill( myDataSet.MyDataTable); 填充了数据,如下所示:

UpdateQuery

所有这一切都正常并且符合预期。当我使用DataGridView(也可以正常工作)更改我的数据,然后再次单击我的UpdateQuery中的任何行时出现问题 - 只要我点击,最后两个单元格(总是)第一行显示为空。无论我点击哪一行,它始终是第一行中的单元格,并且只有在我执行UpdateQuery之后。

当我直接检查Access数据库时,一切都很好(即更新成功)。当我重新启动我的应用程序时,一切都显示没有任何问题(直到下次我致电DataGridView并点击进入我的EndEdit()``and)。

我还尝试调用on the刷新and calling DataGridView on both the AcceptChanges()and the respective DataSet UpdateQuery DataTable` - 没有任何变化。

更新

所描述的行为仅在执行InsertDeleteCellClick工作后没有问题(数据更新正确,没有显示问题)时发生。

更新2

当我使用不同的事件处理程序时,问题也存在 - 最初我使用CellContentClick,我也尝试使用CellMouseClickDataGridView。它甚至发生在我根本不使用鼠标但是使用键盘在DataGridView内导航时。

似乎"只是"显示我的数据不起作用,我错过了什么?我的所有{{1}}我在我的表单中使用同样的错误,无论我查询/更新数据有多简单或复杂。

1 个答案:

答案 0 :(得分:0)

所以这被证明是TextBox.Clear()方法的一些讨厌的行为。我在下面添加了一些我在发布问题时认为不必要的信息:

在我的DataGridView我有一些数据绑定TextBox控件 - 数据绑定被定义为

txtSomeId.DataBindings.Add( "Text", myDataGridView.DataSource, "ID" );

调用UpdateQuery方法后,我重新加载了数据(正常),然后清除了那些TextBox控件的内容:

txtSomeId.Clear();

根据MSDN,此方法

  

“清除文本框中的所有内容”。

这是该页面提供的所有信息。删除这些代码行,所有代码都按预期工作,不再有问题。

调用Clear方法也意味着数据绑定被部分(?)删除是我没想到的。

我写了“部分”,因为绑定仍适用于DataGridViewTextBox控件中的其他行,而不适用于第一行(此处仅适用于某些单元格)。在我看来,这是一种非常奇怪的行为,也许其他人可以对此有所了解。