2016-12-13 5 views
1

Я новичок в Infragistics, используя UltraGrid.Выберите несколько строк с помощью 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» не содержит определение для «клеток» и нет метода расширения «Ячейки», принимающие первый аргумент типа «UltraGrid», можно найти Итак, если есть другая идея или как найти решение для решения этой ошибки. Кстати я использую иерархическую UltraGrid с CheckBox столбца, в моем UltraGrid У меня есть данные Master/Детали

ответ

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, и каждая строка имеет свойство для группы, к которой она принадлежит. И Группа имеет индекс собственности, так что вы получите

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 это работает, но другой вопрос, я хочу выбрать строки в дочернем (Band [1]), как? – Juste3alfaz

+1

Это именно то, что я упоминал во второй части ответа. Если строки, которые должны быть включены в фильтр, должны принадлежать второму диапазону, вам нужно добавить еще один уровень фильтрации. Я попытаюсь обновить вопрос. – Steve

+0

его не работает, нужно добавить еще один фильтр, может быть? – Juste3alfaz

Смежные вопросы