【发布时间】:2015-09-20 15:45:01
【问题描述】:
我有一个用 .net-4.0 编写的 c# windows 窗体应用程序
我有一个 datagridview (dgvItems),我在导入函数的末尾以编程方式将其绑定到数据集和数据表。
我有一个导入按钮,可将数据从选定的 excel 文件导入到名为 _dtItemAdjustList 的表中,一旦导入数据,我就会将该表绑定到我的网格。我用来绑定网格的代码是:
dgvItems.DataSource = _dsQtyAdjust;
dgvItems.DataMember = "Item Adjust List";
dgvItems.Refresh();
到目前为止一切正常,如果我在 datagridview 中编辑导入的数据,它会在编辑每个单元格后更新绑定表 _dtItemAdjustList。
当我尝试手动将一行添加到我的 datagridview 时,我的问题出现了,它不会立即将该新行添加到绑定的数据表中。
示例:我在dgvItems_CellValueChanged 事件的末尾设置了一个断点并添加了一个_dtItemAdjustList.Rows.Count 手表,这就是发生的情况。
导入数据并编辑现有导入行之一后,手表会显示正确的行数,比如 5。
现在我点击最后一行 * 并在我的 item# 列中输入一些内容并点击选项卡,断点触发但我的行数仍然只显示 5,我又填写了几个单元格在新行中,但每次我离开一个单元格并且我的 CellValueChanged 事件触发并且行数保持在 5。
接下来,我添加第二个手动行,现在在我为第二个新行填写的第一个单元格中跳出标签后,我的行计数器变为 6,但从技术上讲,此时我已在我导入的 5 中添加了 2 个手动行,因此计数器应为 7
这重复,基本上每个新的手动添加到 datagridview 的行都不会添加到绑定的数据表中,直到 a) 添加另一行或 b) 我去返回并重新编辑现有行上的单元格。
编辑 忘了提我尝试通过两种方式绑定我的 DataGridView:
DataSource = _dsQtyAdjust //dataset Name
DataMember = "Item Adjust List" // Table Name in the dataset
DataSource = _dtItemAdjustList
就我的新行行为而言,这没有任何区别。
【问题讨论】:
-
假设Winforms(您没有指定为标签),我发现您使用的数据成员名称不是表名!我会使用这种格式绑定 DatagridviewName.DataSource=DataTableName.
-
@EmmadKareem 抱歉,忘记在我的问题中澄清这一点。我尝试以两种方式绑定 DataGridView,但没有任何区别。我已经用这些信息编辑了我的问题。
-
名称是_dtItemAdjustList.TableName=="Item Adjust List" 吗?
-
@EmmadKareem 是的。我确实找到了一个似乎可以完美运行的解决方案。我使用 BindingSource 而不是直接将我的 DataGridView 绑定到我的 DataTable。我将其发布为答案。感谢您抽出宝贵时间回复,非常感谢。
标签: winforms c#-4.0 datagridview datatable