2012-11-02 46 views
0

我正在使用桌面應用程序(VB.NET)。我有一個Dev Express Xtra Grid的表格。在網格中,我有第一列作爲未綁定複選框(存儲庫項目)。現在我已經完成了功能,以便用戶可以選中/取消選中複選框來選擇行。如何查找在DevExpress XtraGrid中檢查哪些複選框?

我想實現的是:

  1. 我有表單上的按鈕。如果沒有選中複選框,則應該禁用該按鈕,否則應該啓用該按鈕。默認情況下,當表單加載時,所有複選框都被選中,所以按鈕被啓用。用戶可以取消選中所有複選框。所以我怎麼才能找到是否有任何一個複選框被選中或者不是讓按鈕啓用/禁用。

  2. 在按鈕單擊事件上,我想要檢查複選框的所有行的id(這是複選框旁邊的網格中的列)。

我有,我必須先使for循環網格中的所有行,然後循環的理念,爲複選框找到複選框選中與否。但是不要把它放在一起。

請幫助我們解決這個問題。

謝謝

回答

0

我不確定「Dev Express Xtra Grid」。不過,如果u使用數據網格

首先聲明和初始化變量說,標誌 - 假的,假

現在u可以使用一個for循環,其繼續在電網循環,直到行數

內循環,U選中「當前列」的複選框是否被選中

如果選中,則標誌設置爲true,並從迴路斷線 其他繼續循環

當前標誌值 如果標誌迴路檢測後= false,則禁用按鈕 否則啓用按鈕。

關於第二個問題做循環檢查內同一迴路和

當前行是否被選中 如果真採取id列 的值否則繼續。

我認爲這個邏輯可能會幫助你。 :)

+0

感謝您的信息。我的確有同樣的想法,你在這裏提到,但我正在尋找一些代碼來做到這一點...沒關係,我已經解決了這個問題,並能夠解決所有上述問題... –

0

如果您使用的是XtraGrid GridControl,您希望更多地處理GridView中包含的編輯器GridView。

通常,您會將數據綁定到GridControl的DataSource屬性,但您希望用於用戶體驗的大多數其他事件和屬性都將與GridView本身相關。

一些更加便利的方法和屬性與你在GridView得到的是FocusedRowHandleFocusedColumnGetFocusedRow()

所以,當你爲的按鈕點擊事件,該方法中,存儲到一個參考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有一個小小的學習曲線,但一旦得到它,這很容易。

相關問題