7

我们的 Windows 窗体上有一个数据绑定的 XtraGrid。其中一列是一个复选框。问题如下:当用户选中复选框并单击“确定”按钮时,该复选框虽然被可见选中,但未被网格视为选中。当我这样做时(在遍历行时):

isAllowed = Convert.ToBoolean(viewMain.GetRowCellValue(nRowCtr, "IsAllowed"))

我回来是假的。但是,如果用户选中该框,然后单击表单上的其他位置或此网格中的另一行,从而将焦点从选中的复选框中移开,则上面的相同代码将返回 True。

任何有关如何解决此行为的见解将不胜感激。

找到解决方法: 使用默认设置,当用户单击单元格进行编辑时,单元格进入编辑模式,加载编辑器控件(在本例中我有一个 CheckEdit 存储库控件)并更改控件的值(在本例中为选中状态) . 如果我单击另一行或另一个控件,则单元格将退出编辑模式,将更改提交给数据项。但是,如果我单击一个按钮,那么我的更改就会丢失。解决方法是使用 CheckEdit 的 CheckedChanged 事件来关闭编辑器:

Private Sub edCheck_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles edCheck.CheckedChanged
        gridYears.FocusedView.CloseEditor()
End Sub
4

2 回答 2

10

实际上有一种更简洁的方法(它适用于所有 RepositoryItems),详见DevExpress 站点。这个想法是从存储库项的 EditValueChanged 事件处理程序调用 GridView.PostEditor 方法,以立即将编辑的值保存到网格的单元格和基础列。

于 2011-08-26T15:22:56.327 回答
0

视图CellValueChanging事件处理程序中的这段代码解决了这个问题:

private void OnCellValueChanging(object sender, CellValueChangedEventArgs e)
{
    _gridView.SetFocusedRowCellValue(_gridView.FocusedColumn, e.Value);
}
于 2015-10-26T09:31:06.767 回答