Janus GridEX:无法在CellValueUpdated事件

时间:2016-09-13 11:33:14

标签: c# janus gridex

处理:

时如何获取当前编辑的值
public class GridEX // ...
{
    // ... 
    public event ColumnActionEventHandler CellValueChanged;
    // ...
};

尝试使用以下方法获取值:

GridEXCell valueChangedCell = _gridView.CurrentRow.Cells[<desired_column_index>];
object rawValue = valueChangedCell.Value;
// or even with
string rawValue = valueChangedCell.Text;

valueChangedCell更改其值的唯一时刻是CellUpdatedUpdatingCell事件被触发时。但后两者只有在用户将键盘输入焦点更改为另一个单元格的情况下才会被触发,这可能是为了应用已编辑单元格的新值。我想查找值的单元格只包含一个复选框。我希望在切换给定单元格的复选框后立即执行给定操作,而不是在用户更改焦点时立即执行移动到表格中的另一个单元格。看到在事件的描述中提到了一些行缓冲区:

[Description("Occurs after changes in a cell are copied into the row's buffer.")]
public event ColumnActionEventHandler CellUpdated;

[Description("Occurs before updating the changes in a cell to the row's buffer")]
public event UpdatingCellEventHandler UpdatingCell;

我认为复选框的当前值可能保留在某个缓冲区中,并且在更改焦点时,新值将应用于单元格。

在处理Janus'GridEX.CellValueChanged时,如何获取当前设置的复选框值?

2 个答案:

答案 0 :(得分:3)

我修复了添加一个在下面的事件中触发的方法的问题:private void

CloseEditMode() 
{ 
   gridRubrica.AllowEdit = InheritableBoolean.False; 
   gridRubrica.AllowEdit = InheritableBoolean.True; 
} 

private void gridRubrica_CellValueUpdated(object sender, ColumnActionEventArgs e) 
{ 
   if (e.Column.Key.Equals("Selected")) { CloseEditMode(); } 
} 

答案 1 :(得分:0)

派对有点晚了,但由于我遇到了同样的困难,所以当Cell Changed是CheckBox时,我决定只刷新挂起的更改

private void gridEX1_CellChanged(object sender, ColumnActionEventArgs e)
{
    if (e.Column.ColumnType == ColumnType.CheckBox)
    {
        gridEX1.UpdateData(); // Flush any pending changes
    }
}

这将触发处理验证的其他处理程序(在我的情况下)