我是使用UltraGrid的Infragistics的新手。
我正在尝试使用复选框列选择多行(或者如果有其他想法)
我有一个DataGridView代码,用于选择多行并将其插入列表,而不是尝试删除或使用所选项目执行代码。
//get the selected item
List<DataGridViewRow> selectedRows = (from row in Detail_shanuDGV.Rows.Cast<DataGridViewRow>()
where Convert.ToBoolean(row.Cells["checkBoxColumn1"].Value) == true
select row).ToList();
但是当我尝试将此代码用于UltraGrid时,就像这样
List<UltraGrid> selectedRows = (from row in ultraGrid1.Rows.Cast<UltraGrid>()
where Convert.ToBoolean(row.Cells["caption"].Value) == true
select row).ToList();
它给了我这个错误
&#39;的UltraGrid&#39;不包含&#39; Cells&#39;的定义。没有扩展方法&#39; Cells&#39;接受第一个类型&#39; UltraGrid&#39;可以找到 所以,如果有另一个想法或如何找到解决方案来解决这个错误。 顺便说一下,我使用带有复选框列的分层UltraGrid,在我的UltraGrid中我有主/详细数据
答案 0 :(得分:2)
你应该转换为UltraGridRow而不是UltraGrid
List<UltraGridRow> selectedRows = (from row in ultraGrid1.Rows.Cast<UltraGridRow>
where Convert.ToBoolean(row.Cells["caption"].Value) == true
select row).ToList();
此外,您可能需要对这些行进行另一级别的过滤。例如,不清楚Caption列的复选框是在主网格上还是在网格的详细信息窗格中。此外,如果您有GroupBy显示选项,则还需要添加另一个条件来仅过滤所需的行
例如,假设您要应用此逻辑,但仅应用详细信息窗格中的行。在Infragistcs术语中,第二个窗格称为Band,每行都有一个属于它所属Band的属性。乐队有一个属性索引,所以你得到了
List<UltraGridRow> selectedRows = (from row in ultraGrid1.Rows.Cast<UltraGridRow>
where row.Band.Index == 1 &&
Convert.ToBoolean(row.Cells["caption"].Value) == true
select row).ToList();
请注意,您首先检查Band索引,并且仅当此行在第二个波段时检查单元格值(因为如果第一个波段中没有&#34; caption&#34;列,您将获得NRE )