2013-04-08 86 views
0

我有一個問題,我一直對我的頭撞得太久,而且我似乎無法找到解決方案。在DevExpress中跟蹤GridControl中的行更改C#

我們正在使用DevExpress,並且我們有一個基於消息的架構,它分派消息讓系統的其他組件知道特定的更改。

我們的許多應用程序都圍繞着對綁定到DataTable對象的網格控件所做的更改。

我們需要調度的一個更重要的消息是當我們的網格控件上的某行發生變化時。因此,如果行中的任何值發生更改,我們希望使用舊行值和新行值分派消息,以便記錄新舊記錄。我們希望在行失去焦點時發生這種情況,而不是立即改變任何值。這是有人可以在發送消息之前更改整行。

我使用的當前解決方案不起作用,甚至不值得解釋。

本質上,我需要爲舊行和新行獲取行值和列名的鍵/值列表。

我不知道如何在DevExpress中做到這一點。

+0

可我知道可以在消息調度所建造的跟蹤,你想跟蹤,因爲網格控件與數據表對象的約束程度,監視數據表對象的級別?只有在數據表處於可接受值狀態時,纔可以跟蹤舊/新值,或者您需要跟蹤事件,即使用戶在devexpress網格中處於編輯狀態? – Turbot 2013-04-08 03:20:58

回答

-3

我認爲你應該使用aspxgridview.rowupdating事件,它會通過屬性e.OldValues和e.NewValues爲你提供舊值和新值。

因此,您可以同時具有您的記錄的值。

如需更詳細的解釋,我會建議您訪問以下鏈接:(我希望它能幫助)

http://www.devexpress.com/Support/Center/Question/Details/Q314701

http://www.devexpress.com/Support/Center/Question/Details/Q261712

http://www.devexpress.com/Support/Center/Question/Details/Q293847

http://www.devexpress.com/Support/Center/Question/Details/Q350500

http://www.devexpress.com/Support/Center/Question/Details/B202180

+0

正如問題所述,它是用於Windows控件,而不是用於網頁。 – jcvegan 2014-07-23 22:38:47

-1

您可以使用DataTable中的數據創建一個BindingList。您需要一個新的類,然後每個對象代表DataTable中的一行。然後,將每個對象添加到BindingList並將其用作DataSource。現在,BindingList.ListChanged事件將觸發網格中更改的foreach值。它讓你獲得新老價值。也許你必須在你的類中實現INotifyPropertyChanged接口來知道單元格是否發生了變化。

1

對此的一個想法是使用DevExpress網格提供的行索引。一旦獲得了已更改行的行索引,就可以使用此行索引執行您想要的任何操作(將其轉換爲對象,保存存儲在行中的數據,突出顯示行等)。這是你如何訪問選定行的索引以網格:

List<int> rowHandles = gridView.GetSelectedRows().ToList();