【发布时间】:2016-02-07 13:06:31
【问题描述】:
我有一个 DataGridView 绑定到来自 DataSet.xsd 的 DataTable。我通过代码向DataGridView 添加了一个名为_RowString 的附加列。它包含一个由包含在DataTable 的其他列中的所有字符串值组成的字符串,我想使用该列来过滤DataGridView。
我的第一种方法是将_RowString 列直接添加到我的DataTable 而不是DataGridView。但这在我需要插入或更新记录时引起了一些问题,因为在DataTable 上添加和计算列会导致 RowState 所有的值 @ 987654332@ rows to be Changed 所以 TableAdapterManager.UpdateAll(DataSet) 方法总是更新所有记录!
我知道我可以像以前一样使用BindingSource 过滤DataGridView:
BindingSource.Filter = String.Format("[_RowString] LIKE '%{0}%'", FilterTextBox.Text);
但由于上述原因,我不想将_RowsString 列添加到我的DataTable 对象中。
如何在不使用BindingSource 和/或将_RowString 列添加到我的DataTable 对象的情况下使用_RowString 未绑定列过滤DataGridView?
否则,有没有办法在我的DataTable 中添加一列而不更改RowState 的值?
【问题讨论】:
-
您能否通过将连接的字符串选择到一列中来将过滤列创建为“计算列”,您不会在 datagridview 中显示该列吗?
-
@TaW 你的意思是我是否可以在与 DataSet 中的 DataTable 关联的 SELECT 命令中创建 _RowString 列?
-
是的,我就是这个意思。由于它不是真正的列,因此无法更新,但我不知道需要做什么(如果有的话)以保持选择可更新,
-
我还需要更新 _RowString 列,因为 DataGridView 是可编辑的。所以我需要通过调用 TableAdapter 的 Fill 方法来刷新它,每次我 INSERT 或 UPDATE 一条记录。我下周一试试! :-)
-
@TaW 它可以正常工作!请发布您的解决方案,以便我接受!
标签: c# datagridview datatable filtering databound