GridView中的自定义单元格外观更改事件

时间:2016-03-02 11:44:03

标签: devexpress devexpress-windows-ui

我正在使用以下代码禁用XtraGrid GridView中的复选框列(按预期工作)。得到了这篇文章的代码https://www.devexpress.com/Support/Center/Question/Details/Q423605

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 个答案:

答案 0 :(得分:1)

您需要刷新“忽略”列中的单元格。您可以通过调用GridView.RefreshRowCell方法来完成此操作。要标识需要刷新的行, CellValueChanged 事件将提供 e.RowHandle 参数。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<canvas id="avatar" width="178" height="178"></canvas>

将再次引发 CustomDrawCell 事件以更新单元格外观。