Infragistics UltraGrid с расширяемыми строками

Я показываю своим пользователям список элементов в UltraGrid, которые поступают из базы данных. Теперь у меня есть одна потребность, и я не нахожу ничего полезного или какой-либо понятной документации, и нет ни одного учебника, где я мог бы учиться.

Мне нужно расширить функциональность этой сетки, чтобы установить (+) функцию расширения, чтобы, когда пользователь нажимал эту кнопку (+), строка расширялась и отображала элементы, которые находятся в истории.

Кто-нибудь в мире может помочь мне решить эту проблему или указать соответствующие документы, где я могу учиться?

Большое спасибо.


person gds03    schedule 09.10.2012    source источник


Ответы (1)


Трюк прост. Вам просто нужно связать сетку с набором данных, который содержит две (или более) таблицы и правильный объект DataRelation, который склеивает таблицы.
Вам также нужно убедиться, что свойство grid.DisplayLayout.ViewStyle< /strong> установлено значение MultiBand (это значение по умолчанию, поэтому оно уже должно быть установлено).

Так, например, в этом псевдокоде я загружаю две таблицы и добавляю их в набор данных, затем определяю предполагаемую связь между задействованными столбцами и, наконец, привязываю набор данных к сетке.

DataSet ds = new DataSet();
DataTable dtItems = YourLoadDataTableMethodHere("Items");
ds.Tables.Add(dtItems);
DataTable dtHistory = YourLoadDataTableMethodHere("History");
ds.Tables.Add(dtHistory);
DataRelation rel = new DataRelation("Items_History_Relation",
                        dtItems.Columns["IDItem"],
                        dtHistory.Columns["IDItem"]);
ds.Relations.Add(rel);
grid.DataSource = ds;

Это автоматически заставит UltraGrid создать две полосы (grid.DisplayLayout.Bands[]), в первой полосе (Band[0]) вы найдете строки данных Items, каждая строка имеет свою кнопку [+], чтобы щелкнуть и разверните второй диапазон (Band[1]), где вы увидите строки истории, связанные со строкой в ​​первом диапазоне.

person Steve    schedule 09.10.2012
comment
Мне интересно, как это сделать, но с объектами. Я использую EntityFramework и сопоставляю эти объекты с DTO, которые передаются на мой уровень графического интерфейса. Мой слой GUI знает только о DTO. - person gds03; 11.10.2012
comment
Когда вы привязываете сетку к списку объектов, пока объекты предоставляют свойство типа IList, вы автоматически получите индикатор расширения, поскольку для дочерних элементов будет создана полоса. - person alhalama; 23.10.2012