你好,使用vs2008 winforms。
我希望能够使用稍微定制的数据网格视图,但无法想到一种方法。
我有 1. sqldataadaptor填充数据集 2.绑定到数据集的绑定源 3一个datagridview,绑定源设置为数据源。我希望绑定允许数据集和datagridview之间的同步,因此我可以编辑数据,然后使用sqldataadaptor更新到数据库。更新
我想显示一些计算结果的自定义列。 我想显示一个最终的底行,它是DVG中所有列的总和。
我的问题是,一旦DGV绑定我无法添加自定义列或行,它不会让我。 我知道我可以直接将它添加到作为基础数据源的数据集中,然后通过更改数据集的结构,一旦进行了编辑,我就无法更新到数据库。
或者我可以吗?
有人可以告诉我如何将自定义列和最终总行添加到绑定的DGV。
同样在这里,如果我点击列的顶部对其进行排序,在绑定的DGV中,它是否也会重新排序基础数据集,所以我编辑的东西仍然会保持同步?
提前感谢任何帮助
答案 0 :(得分:1)
是的,你可以。
适配器不关心结构。它只关心Select / Insert / Update / Delete命令中使用的列名。您可以添加自定义列,表达式列,小计列,总计列或任何需要的列。甚至改变列的顺序。我建议添加一个排序列,这样当您或用户排序时,您可以将自定义行保留在适当的位置。
您可以为自定义行执行相同的操作。通过适配器进行更新时,您处理RowUpdating
事件并将SqlRowUpdatingEventArgs.Status
设置为SkipCurrentRow
这些自定义行。我强烈建议您创建一个行类型列,以便了解更新时要跳过的行。 (您也可以使用排序列的值作为跳过行的键。)
MSDN或KB上有几篇文章说明了如何添加总行数。
根据我的经验,在绑定之前先操作数据表。做你需要做的事情来支持网格和网格的界面。可以操作数据,添加/更改/删除列和行,然后在需要时重新绑定。
答案 1 :(得分:0)
为了能够向DataGridView
添加其他未绑定列,您还可以将其AutoGenerateColumns
属性设置为false
,然后使用以下方法添加自定义列:
dataGridView->Columns->Add(...)
要计算未绑定列的内容,您可以处理CellValueNeeded
和CellValuePushed
事件,但必须通过将VirtualMode
属性设置为{{}将DataGridView设置为“虚拟模式” 1}}以便调用事件处理程序。
希望这有点帮助......