2016-12-13 50 views
1

我是使用UltraGrid的Infragistics的新手。用UltraGrid选择多行

我想选择多行使用复选框列(或是否有另一种想法)

我有一个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(); 

它给了我这个错误

“的UltraGrid”不包含定义为“细胞”和没有扩展方法'Cells'接受类型'UltraGrid'的第一个参数可以被发现 因此,如果theres另一个想法或如何找到解决方案来解决这个错误。 通过我使用分层的UltraGrid与复选框列的方式,在我的UltraGrid我有主/详细数据

回答

2

你应该投给UltraGridRow不要的UltraGrid

List<UltraGridRow> selectedRows = (from row in ultraGrid1.Rows.Cast<UltraGridRow> 
           where Convert.ToBoolean(row.Cells["caption"].Value) == true 
           select row).ToList(); 

此外,可能需要另一个层面在这些行上进行过滤。例如,不清楚列标题的复选框是在主控制器上还是在网格的详细信息窗格中。此外,如果你有一个的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(); 

请注意,您对于波段指数,首先检查仅当此行是在您检查的单元格的值(因为如果没有“标题第二带“在第一个乐队列你得到一个NRE)

+0

thnx它的工作原理,但另一个问题,我想我选择行(乐队[1]),如何? – Juste3alfaz

+1

这正是我在答案的第二部分提到的。如果要包含在过滤器中的行应属于第二个波段,则需要在过滤中添加另一个级别。我会尝试更新这个问题。 – Steve

+0

它不工作,需要添加另一个过滤器也许? – Juste3alfaz