第一次更改时不会触发CellValueChanging事件

时间:2015-09-09 18:49:37

标签: c# events gridview devexpress

我为devexpress网格视图单元设置了CellValueChanging事件,其中通过更改单元格(组合框)的值,其他单元格的值发生变化。 当选择其中一个项目时,单元格值更改事件会触发,但是注释会显示在其他单元格中,但是当选择另一个组合框项目时,它的效果非常好。 每个新行也会出现这种情况。 我怎么处理这个? 这是事件:

private void windowBasedMainGridView_CellValueChanging(object sender, CellValueChangedEventArgs e)
    {
        //if the selected column is not int or dbl, set the descritazation to be automatic
        if (e.Column.FieldName == "CriterionParameter")
        {
            windowBasedMainGridView.SetFocusedRowCellValue("CriterionParameterDiscretization", "Automatic");
            string strSelectedColumnName = commonlyUsedMethodsClass.ColumnNameFromColumnCaption(frmMainForm.projectDataSet.Tables[strinputDatatableName], e.Value.ToString());
            Type typeOfSelectedParameter = frmMainForm.projectDataSet.Tables[strinputDatatableName].Columns[strSelectedColumnName].DataType;
            if ((typeOfSelectedParameter == typeof(double) || typeOfSelectedParameter == typeof(int)))
            {
                windowBasedMainGridView.SetFocusedRowCellValue("CriterionParameterDesceretazationMethod", "Linear");
                //set the min and max of property
                if (typeOfSelectedParameter == typeof(double))
                {
                    List<double> valuesList = commonlyUsedMethodsClass.DoubleListGenerator(frmMainForm.projectDataSet.Tables[strinputDatatableName], strSelectedColumnName);
                    windowBasedMainGridView.SetFocusedRowCellValue("CriterionParameterMinimum", valuesList.Min());
                    windowBasedMainGridView.SetFocusedRowCellValue("CriterionParameterMaximum", valuesList.Max());
                }
                else
                {
                    List<int> valuesList = commonlyUsedMethodsClass.IntegerListGenerator(frmMainForm.projectDataSet.Tables[strinputDatatableName], strSelectedColumnName);
                    windowBasedMainGridView.SetFocusedRowCellValue("CriterionParameterMinimum", valuesList.Min());
                    windowBasedMainGridView.SetFocusedRowCellValue("CriterionParameterMaximum", valuesList.Max());
                }
            }
            else
            {
                windowBasedMainGridView.SetFocusedRowCellValue("CriterionParameterDesceretazationMethod", "");
                windowBasedMainGridView.SetFocusedRowCellValue("CriterionParameterMinimum", null);
                windowBasedMainGridView.SetFocusedRowCellValue("CriterionParameterMaximum", null);
            }


        }

下面的图片显示首先选择该项目(其他单元格未自动填充): enter image description here 下面的图片是当第一次选择另一个组合框项目然后选择深度项目时(其他单元格根据cellvaluechanging事件自动填充): enter image description here

1 个答案:

答案 0 :(得分:0)

尝试在处理程序的末尾添加此方法:

windowBasedMainGridView.BeginDataUpdate();
windowBasedMainGridView.EndDataUpdate();

OR:

windowBasedMainGridView.RefreshData();

此外,您可能需要调用PostEditor方法:

windowBasedMainGridView.PostEditor();