我的DataGridView
绑定到BindingSource
,DataSet
再次DataSource
为其TableAdapter
。 DataSet
中的相应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` - 没有任何变化。
更新
所描述的行为仅在执行Insert
,Delete
和CellClick
工作后没有问题(数据更新正确,没有显示问题)时发生。
更新2
当我使用不同的事件处理程序时,问题也存在 - 最初我使用CellContentClick
,我也尝试使用CellMouseClick
和DataGridView
。它甚至发生在我根本不使用鼠标但是使用键盘在DataGridView
内导航时。
似乎"只是"显示我的数据不起作用,我错过了什么?我的所有{{1}}我在我的表单中使用同样的错误,无论我查询/更新数据有多简单或复杂。
答案 0 :(得分:0)
所以这被证明是TextBox.Clear()
方法的一些讨厌的行为。我在下面添加了一些我在发布问题时认为不必要的信息:
在我的DataGridView
我有一些数据绑定TextBox
控件 - 数据绑定被定义为
txtSomeId.DataBindings.Add( "Text", myDataGridView.DataSource, "ID" );
调用UpdateQuery
方法后,我重新加载了数据(正常),然后清除了那些TextBox
控件的内容:
txtSomeId.Clear();
根据MSDN,此方法
“清除文本框中的所有内容”。
这是该页面提供的所有信息。删除这些代码行,所有代码都按预期工作,不再有问题。
调用Clear
方法也意味着数据绑定被部分(?)删除是我没想到的。
我写了“部分”,因为绑定仍适用于DataGridView
和TextBox
控件中的其他行,而不适用于第一行(此处仅适用于某些单元格)。在我看来,这是一种非常奇怪的行为,也许其他人可以对此有所了解。