除非焦点发生变化,否则不会注册DevExpress XtraGrid复选框

Ale*_*sky 7 checkbox xtragrid

我们在Windows窗体上有一个数据绑定XtraGrid.其中一列是复选框.问题如下:当用户选中复选框并单击"确定"按钮时,网格不会检查明确检查的复选框.当我这样做(循环遍历行)时:

isAllowed = Convert.ToBoolean(viewMain.GetRowCellValue(nRowCtr, "IsAllowed"))
Run Code Online (Sandbox Code Playgroud)

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

任何有关如何解决此问题的见解将不胜感激.

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

Private Sub edCheck_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles edCheck.CheckedChanged
        gridYears.FocusedView.CloseEditor()
End Sub
Run Code Online (Sandbox Code Playgroud)

小智 10

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