0

在我的同步融合网格中,我必须根据类型使一些系列单元格不可编辑。如果类型是 'XXX' 则单元格是可编辑的,如果类型是 'YYY','ZZZ' 则单元格是不可编辑的

所以在这里;这就是我所做的。

 private void theGrid_CurrentCellChanging(object sender, System.ComponentModel.CancelEventArgs e)
    {
        fp_data_typ typ;
        int nSeries = theData.GetNumSeries();
        for (int i = 0; i < nSeries; i++)
        {
            typ = theData.CheckType(i);
            if (!(typ == 'XXX'))
            {

                e.Cancel = true;
            }
        }

    }

我不确定是否应该使用 Grid_CurrentCellChanging 事件或 Grid_CurrentCellStartEditing。文档不是很清楚。给了我大量的事件来处理单元格编辑。

之前的代码以不正确的方式工作。如果网格具有可编辑和不可编辑系列的组合,则它不起作用。i:e 如果它同时具有 xxx)editable 和 'yyy'(non-editable),它会使两者都不可编辑。

4

2 回答 2

0

以下事件将帮助您实现您的要求。

//Use this if you want to control the ReadOnly setting while loading itself
grid.QueryCellInfo += new GridQueryCellInfoEventHandler(grid_QueryCellInfo);

void grid_QueryCellInfo(object sender, GridQueryCellInfoEventArgs e)
{
    if (e.Style.CellValue.Equals("YYY"))
    {
        e.Style.ReadOnly = true;
    }
}

//Use this if you want to Validate while Editing
grid.CurrentCellValidating += new CurrentCellValidatingEventHandler(grid_CurrentCellValidating);

void grid_CurrentCellValidating(object sender, CurrentCellValidatingEventArgs e)
{
    //Will deactive the cell and new value will be discarded
    //e.NewValue = e.OldValue;

    //To remain in Edit mode without committing the vlaue
    e.Cancel = true;
}

谢谢, 西瓦库玛

于 2012-06-27T06:28:23.297 回答
0

我能够获取当前单元格的列索引,并从那里将 e.cancel 设置为 true/false。我没有为整个网格设置一次 e.cancel,而是选择了正在编辑的单元格。

于 2012-05-17T17:53:03.657 回答