2010-02-16 142 views
4

你好,使用vs2008 winforms。自定義綁定的datagridview

我想能夠使用稍微定製的datagridview,但不能想辦法做到這一點。

我有 1. sqldataadaptor填充數據集 2.結合到數據集 3設定爲數據源BindingSource的一個DataGridView綁定源。

我想讓綁定允許數據集和datagridview之間的同步,所以我可以編輯數據,然後用sqldataadaptor更新到數據庫。更新。

我想顯示一些自定義列是計算結果。 我想要顯示的是DVG中所有列的總計的最後一行。

我的問題是一旦DGV綁定我不能添加自定義列或行,它不會讓我。 我知道我可以直接將它添加到作爲底層數據源的數據集中,但是通過更改數據集的結構,我無法在編輯完成後更新到數據庫。

或可以嗎?

有人可以告訴我如何將我的自定義列和最終總行添加到綁定的DGV。

此外,雖然即時通訊在這裏,如果我點擊列的頂部來排序它,在一個綁定的DGV,它也會重新排序底層數據集,所以我編輯的東西仍然會保持同步?

在此先感謝您的幫助

回答

1

是的,你可以。

適配器不關心結構。它只關心選擇/插入/更新/刪除命令中使用的列名。您可以添加自定義列,表達式列,小計列,總計列或任何您需要的內容。甚至改變列的順序。我建議添加一個排序列,以便您或當用戶排序時可以將自定義行保留在適當的位置。

您可以對自定義行執行相同的操作。當您通過適配器進行更新時,您將處理RowUpdating事件,並將這些自定義行的SqlRowUpdatingEventArgs.Status設置爲SkipCurrentRow。我強烈建議創建一個行類型的列,以便在更新時知道要跳過哪些行。 (您也可以使用排序列的值作爲跳過行的鍵。)

MSDN或KB上有幾篇文章說明如何添加總行數。

根據我的經驗,在綁定前先操作數據表。爲了支持電網和電網的接口,做你需要做的事情。可以操縱數據,添加/更改/刪除列和行,然後在需要時重新綁定。

0

爲了能夠更多的未綁定列到你的DataGridView你也可以設置它的AutoGenerateColumns屬性與下面的方法添加到false,然後添加自定義列:

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

要計算未綁定列的內容,您可以處理CellValueNeededCellValuePushed事件,但必須通過將VirtualMode屬性設置爲true將DataGridView設置爲「虛擬模式」以便調用事件處理程序。

希望這有點幫助....