2014-10-31 15 views
0

說明:的WinForm的DevExpress XtraGrid中以編程方式來檢查網格視圖指定的複選框列

我有一個包含RepositoryItemCheckEdit列的和RepositoryItemTextEdit列的,網格視圖的網格視圖包含列的像Item IdBar codePack Id

1)RepositoryItemCheckEdit

相同Item Idbar code可以進來網格視圖多個項目進行各色nt pack id

我需要的是,如果用戶在網格視圖中選擇任何一個項目ID的複選框意味着我需要所有關聯的複選框行被選中或取消選中viceversa。用戶可以選擇第一個複選框或最後一個複選框,然後相關的複選框需要檢查或基於用戶選擇選中反之亦然

2)RepositoryItemTextEdit

同像複選框欄目編輯,文字編輯列Edit(編輯)需要制定,例如,如果用戶在項ID列單元格值進入100指則對應項目的ID行的如下

void repchkCheckbox_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) 
    { 
       DataTable dt_check = new DataTable(); 
       dt_check = (DataTable)gcItemMaster.DataSource; 
       Int64 sItemId = Convert.ToInt64(gvItemMaster.GetRowCellValue(gvItemMaster.FocusedRowHandle, gvItemMaster.Columns["ItemID"])); 
       bool bDiscount = Convert.ToBoolean(e.Value); 
       int iItemcount = (from DataRow row in dt_check.Rows where (string)row["ItemID"] == "1" select row).Count(); 
       int iRowHandle = gvItemMaster.FocusedRowHandle; 
       for (int i = 0; i < iItemcount; i++) 
       { 
        if (bDiscount) 
         gvItemMaster.SetRowCellValue(iRowHandle, gvItemMaster.Columns["AllowDiscount"], true); 
        else 
         gvItemMaster.SetRowCellValue(iRowHandle, gvItemMaster.Columns["AllowDiscount"], false); 

        iRowHandle++; 
       } 
     } 

說明用途也應指定爲100:如果我包含在同一gridview的5行itemid但不同的包編號... 如果我檢查itemId的第一行復選框意味着我可以很容易地通過增加rowhandle值來填充剩餘的複選框,如第二,第三,第四,第五個 但我的問題是,如果我想檢查3行gridview Itemid複選框意味着我只能填充第4行和第5行復選框狀態..但是第1行和第2行保持不變...

+0

那麼你嘗試過這麼遠嗎?任何努力?你面臨什麼問題? – 2014-10-31 12:16:25

+0

抱歉,無法看到您在實施時遇到的任何問題。 – Reniuz 2014-10-31 12:19:44

回答

0

我找到了解決它的完美的作品:

     Int64 iItemId = Convert.ToInt64(gvItemMaster.GetRowCellValue(e.RowHandle, "ItemID")); 
        bool bDiscount = Convert.ToBoolean(e.Value); 

       for (int i = 0; i < gvItemMaster.DataRowCount; i++) 
       { 
        Int64 id = Convert.ToInt64(gvItemMaster.GetRowCellValue(i, "ItemID")); 
        if (id == iItemId) 
        { 
         if (bDiscount) 
          gvItemMaster.SetRowCellValue(i, gvItemMaster.Columns[""+sColumn.Replace(" ","")+""], true); 
         else 
          gvItemMaster.SetRowCellValue(i, gvItemMaster.Columns[""+sColumn.Replace(" ","")+""], false); 
        } 
       } 
0

您的數據表中是否有字段來表示已選狀態?

如果你這樣做,那麼你實際上並不需要通過電網。您可以簡單地從數據表中選擇具有匹配ID的行,並將相關列設置爲每個數據行所需的值。更改將自動反映在網格中。

相關問題