如果您使用的是XtraGrid GridControl,您希望更多地處理GridView中包含的編輯器GridView。
通常,您會將數據綁定到GridControl的DataSource屬性,但您希望用於用戶體驗的大多數其他事件和屬性都將與GridView本身相關。
一些更加便利的方法和屬性與你在GridView得到的是FocusedRowHandle
,FocusedColumn
,GetFocusedRow()
等
所以,當你爲的按鈕點擊事件,該方法中,存儲到一個參考gridview,即
private void SomeButtonClick(object sender, EventArgs e)
{
var gridView = this.whateverYourGridViewIsNamedGridView;
//Now, you can access the methods and properties of the gridView...
//Say you want to obtain the focused row's handle
var rowHandle = gridView.FocusedRowHandle;
//Or, in your case, if you want to iterate through the rows or columns...
for(GridColumn column in gridView.Columns)
{
if(condition)
{
//Do something
}
}
}
根據你的場景,我建議你再次打開設計器。在左下角,單擊就地編輯器存儲庫。你應該在這裏看到你的CheckEdit
。如果您選擇CheckEdit
,您應該能夠點擊小閃電並訪問編輯器的事件。您想要註冊CheckStateChanged
事件或CheckedChanged
事件,任何時候編輯器的任何檢查狀態都會更改。
從這裏,我會添加一個布爾到您的域對象或視圖模型來裝飾該布爾對於它的域對象爲isChecked
。這樣一來,當檢查事件觸發,你可以處理設置此布爾...例如:
private void CheckEventFiring(object sender, EventArgs e)
{
//Get the currently focused row and cast it to your object
//This will expose all the properties, including the aforementioned boolean value
var currentRow = gridView.GetFocusedRow() as YourDomainObject;
//Based on checked state...
currentRow.IsChecked = //Checked or Unchecked
}
現在你已經設置這個,當你按一下按鈕,你可以得到所有的物品從網格控件的數據源,通過做一些像「被檢查」 ...
var dataSource = gridControl.DataSource as List<YourDomainObject>().Where(x => x.IsChecked);
現在您只需從那裏的物品進行檢查行的數據。當檢查狀態未選中時,對象上的布爾值應該爲false,選中時應該爲true。
讓我知道這是否有意義。 Dev Express有一個小小的學習曲線,但一旦得到它,這很容易。
感謝您的信息。我的確有同樣的想法,你在這裏提到,但我正在尋找一些代碼來做到這一點...沒關係,我已經解決了這個問題,並能夠解決所有上述問題... –