1. 程式人生 > >devexpress控制元件中的gridControl設定某個單元格屬性

devexpress控制元件中的gridControl設定某個單元格屬性

前提:有一列RepositoryItemCheckEdit複選框列,和一列RepositoryItemButtonEdit按鈕列,特定條件下這行的複選框和按鈕不可用。效果圖如下:

原理是在程式碼中宣告新的物件,給新的物件賦屬性值,再用新的物件替換原有的物件。


程式碼如下:

RepositoryItemCheckEdit _disItemCheck;//宣告用來替換‘選擇’列複選框的物件
RepositoryItemButtonEdit _disItemBtn;//宣告用來替換‘申領’列按鈕的物件

       //此時間會逐行逐列遍歷單元格

        private void gridView1_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
        {

//若當前進行到了“選擇”列,
            if (e.Column.Name == "colCheck")
            {

//將單元格中的物件賦值給新宣告的複選框物件
                _disItemCheck = (RepositoryItemCheckEdit)e.RepositoryItem.Clone();

//設定只讀屬性
                _disItemCheck.Enabled = false;
                _disItemCheck.ReadOnly = true;
            }
            if (e.Column.Name == "colAPPLY")
            {
                _disItemBtn = (RepositoryItemButtonEdit)e.RepositoryItem.Clone();
                _disItemBtn.Buttons[0].Enabled = false;
            }

//如果當前行滿足條件則替換
            if (lst[e.RowHandle].CHARGE == "已" && (lst[e.RowHandle].R == string.Empty || lst[e.RowHandle].R == null))
            {
                if (e.Column.Name == "colCheck")
                {
                    e.RepositoryItem = _disItemCheck;
                }
                else if(e.Column.Name == "colAPPLY")
                {
                    e.RepositoryItem = _disItemBtn;
                }
            }
        }