Vb.net 如何查找在DevExpress XtraGrid中选中的复选框?
我正在开发一个桌面应用程序(VB.NET)。我有一个关于devexpressxtra网格的表单。在网格中,我有第一列作为未绑定复选框(存储库项)。现在,我已经创建了该功能,以便用户可以选中/取消选中复选框来选择行 我想要实现的是:Vb.net 如何查找在DevExpress XtraGrid中选中的复选框?,vb.net,checkbox,devexpress,xtragrid,Vb.net,Checkbox,Devexpress,Xtragrid,我正在开发一个桌面应用程序(VB.NET)。我有一个关于devexpressxtra网格的表单。在网格中,我有第一列作为未绑定复选框(存储库项)。现在,我已经创建了该功能,以便用户可以选中/取消选中复选框来选择行 我想要实现的是: 我在表格上有一个按钮。如果未选中任何复选框,则应禁用该按钮,否则应启用该按钮。默认情况下,加载表单时,选中所有复选框,因此按钮处于启用状态。用户可以取消选中所有复选框。因此,我如何才能找到是否选中了任何一个复选框以启用/禁用按钮 在button click事件中,我想
我认为这种逻辑可能对你有所帮助。:) 如果使用XtraGrid GridControl,则需要更多地处理GridView,它是GridControl中包含的编辑器 通常,您会将数据绑定到GridControl的DataSource属性,但要用于用户体验的大多数其他事件和属性都与GridView本身相关 通过GridView获得的一些更方便的方法和属性有
FocusedRowHandle
,FocusedColumn
,GetFocusedRow()
,等等
因此,当您为该按钮注册单击事件时,在该方法内存储对gridview的引用,即
private void somebutton单击(对象发送方,事件参数e)
{
var gridView=this.WhateYourGridViewisNamedGridView;
//现在,您可以访问gridView的方法和属性。。。
//假设您想要获得聚焦行的句柄
var rowHandle=gridView.FocusedRowHandle;
//或者,在您的情况下,如果您希望遍历行或列。。。
for(gridView.Columns中的GridColumn列)
{
如果(条件)
{
//做点什么
}
}
}
根据您的场景,我建议您再次打开设计器。在左下角,单击在位编辑器存储库。您应该在此处看到您的复选框编辑。如果选择复选框编辑
,您应该能够单击小闪电并访问编辑器的事件。您希望注册CheckStateChanged
事件或CheckedChanged
事件,该事件将在编辑器的任何检查状态更改时触发
从这里开始,我将向您的域对象或viewmodel添加一个bool,以便在isChecked
中用bool装饰该域对象。这样,当check事件触发时,您可以处理设置此bool。。。例如:
private void CheckEventFiring(对象发送方,EventArgs e)
{
//获取当前聚焦的行并将其投射到对象
//这将公开所有属性,包括前面提到的布尔值
var currentRow=gridView.GetFocusedRow()作为域对象;
//基于选中状态。。。
currentRow.IsChecked=//已选中或未选中
}
现在您已经设置好了,当您单击按钮时,您可以通过执行以下操作从网格控件的数据源中获取所有“已检查”的项
var dataSource=gridControl.dataSource as List()。其中(x=>x.IsChecked);
现在,您只有来自检查项目所在行的数据。如果未选中“检查状态”,则对象上的布尔值应为false,如果选中,则应为true
让我知道这是否有意义。devexpress有一个很小的学习曲线,但是一旦你掌握了它,就很容易了 谢谢你的信息。我确实有你在这里提到的相同想法,但我正在寻找一些代码来做到这一点。。。不管怎样,我已经解决了这个问题,并且能够解决上面所有的问题。。。