2016-03-02 78 views
1

我正在使用以下代碼禁用XtraGrid GridView中的複選框列(按預期工作)。從這個帖子https://www.devexpress.com/Support/Center/Question/Details/Q423605拿到代碼:GridView中的自定義單元格外觀更改事件

Disabled checkbox

private void GridViewWeeklyPlan_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) 
    { 
     if (e.Column.FieldName == "Ignore") 
     { 
      CheckEditViewInfo viewInfo = ((GridCellInfo)e.Cell).ViewInfo as CheckEditViewInfo; 
      viewInfo.CheckInfo.State = DevExpress.Utils.Drawing.ObjectState.Disabled; 
     } 
    } 

發行

我想再次啓用該複選框,當某一列的變化,並具有價值。這是我在哪裏卡住了,我想我可以在GridView的CellValueChanged事件改變它,但我不知道如何引用單元格/列行:

Change the checkbox when column has value

private void GridViewWeeklyPlan_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) 
    { 
     if (e.Column.FieldName != "Reason") return; 


     if (String.IsNullOrEmpty(e.Value.ToString())) 
     { 
      //Make sure the checkbox is disabled again 
     } 
     else 
     { 
      //Enable the checkbox to allow user to select it 
     } 

    } 

回答

1

您需要刷新忽略列中的單元格。你可以通過調用GridView.RefreshRowCell方法來做到這一點。要識別需要刷新的行,可以使用CellValueChanged事件提供參數e.RowHandle

private void GridViewWeeklyPlan_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) 
    { 
     if (e.Column.FieldName != "Reason") return; 
     GridView view = (GridView)sender; 
     view.RefreshRowCell(e.RowHandle, view.Columns["Ignore"]); 

    } 

CustomDrawCell事件將再次被提出來更新單元格的外觀。

+0

你先生,是個紳士和學者! –

相關問題