簡體   English   中英

在DevExpress C#中的GridControl中跟蹤行更改

[英]Tracking row changes in the GridControl in DevExpress C#

我有一個問題,我一直在爭吵太久了,似乎無法找到解決方案。

我們正在使用DevExpress,並且我們有一個基於消息的體系結構,該體系可調度消息,使系統的其他組件知道特定的更改。

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

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

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

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

我不確定如何在DevExpress中執行此操作。

一種想法是使用DevExpress網格提供的行索引。 擁有更改后的行的行索引之后,就可以使用該行索引對其進行任何處理(投射到對象中,保存該行中存儲的數據,突出顯示該行等)。 這是您訪問網格中所選行的索引的方式:

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

您可以使用DataTable中的數據創建BindingList。 然后,您需要一個新類,並且每個對象都代表DataTable中的Row。 然后,將每個對象添加到BindingList並將其用作數據源。 現在,BindingList.ListChanged事件將為網格中的每個更改的值觸發。 它使您可以訪問新舊價值。 也許您必須在類中實現INotifyPropertyChanged接口,才能知道單元格是否已更改。

我認為您應該使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM