自定义绑定的datagridview

时间:2010-02-16 13:09:48

标签: c# winforms datagridview

你好,使用vs2008 winforms。

我希望能够使用稍微定制的数据网格视图,但无法想到一种方法。

我有 1. sqldataadaptor填充数据集 2.绑定到数据集的绑定源 3一个datagridview,绑定源设置为数据源。

我希望绑定允许数据集和datagridview之间的同步,因此我可以编辑数据,然后使用sqldataadaptor更新到数据库。更新

我想显示一些计算结果的自定义列。 我想显示一个最终的底行,它是DVG中所有列的总和。

我的问题是,一旦DGV绑定我无法添加自定义列或行,它不会让我。 我知道我可以直接将它添加到作为基础数据源的数据集中,然后通过更改数据集的结构,一旦进行了编辑,我就无法更新到数据库。

或者我可以吗?

有人可以告诉我如何将自定义列和最终总行添加到绑定的DGV。

同样在这里,如果我点击列的顶部对其进行排序,在绑定的DGV中,它是否也会重新排序基础数据集,所以我编辑的东西仍然会保持同步?

提前感谢任何帮助

2 个答案:

答案 0 :(得分:1)

是的,你可以。

适配器不关心结构。它只关心Select / Insert / Update / Delete命令中使用的列名。您可以添加自定义列,表达式列,小计列,总计列或任何需要的列。甚至改变列的顺序。我建议添加一个排序列,这样当您或用户排序时,您可以将自定义行保留在适当的位置。

您可以为自定义行执行相同的操作。通过适配器进行更新时,您处理RowUpdating事件并将SqlRowUpdatingEventArgs.Status设置为SkipCurrentRow这些自定义行。我强烈建议您创建一个行类型列,以便了解更新时要跳过的行。 (您也可以使用排序列的值作为跳过行的键。)

MSDN或KB上有几篇文章说明了如何添加总行数。

根据我的经验,在绑定之前先操作数据表。做你需要做的事情来支持网格和网格的界面。可以操作数据,添加/更改/删除列和行,然后在需要时重新绑定。

答案 1 :(得分:0)

为了能够向DataGridView添加其他未绑定列,您还可以将其AutoGenerateColumns属性设置为false,然后使用以下方法添加自定义列:

dataGridView->Columns->Add(...)

要计算未绑定列的内容,您可以处理CellValueNeededCellValuePushed事件,但必须通过将VirtualMode属性设置为{{}将DataGridView设置为“虚拟模式” 1}}以便调用事件处理程序。

希望这有点帮助......