使用UltraGrid选择多行

时间:2016-12-13 16:48:54

标签: c# winforms infragistics ultragrid ultrawingrid

我是使用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中我有主/详细数据

1 个答案:

答案 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 )