Иерархические данные в сетке данных Silverlight - PullRequest
0 голосов
/ 24 июня 2011

Я пытаюсь создать таблицу данных, в которой первый столбец содержит знак «+», а следующие столбцы содержат данные. Когда пользователь щелкает знак «+», данные берутся из текущей строки, и соответствующие иерархические данные из другой таблицы отображаются в новой сетке чуть ниже текущей строки. Я пытался искать в Интернете, но не смог найти ни одного примера.

Пожалуйста, предложите мне, как это проверить.

Допустим, сетка содержит

  • col1 Col2 .... Col50
  • col1 Col2 .... Col50

Когда пользователь нажимает знак «+».

должно читаться как col1, Col2, Col3, Col4

Затем выполните вызов базы данных и получите данные на основе вышеуказанных значений.

результирующая сетка должна быть

  • col1 col2 .... Col50 NestedCol1 NestedCol2 ... NestedCol20 NestedCol1 NestedCol2 ... NestedCol20 , , , , .
  • col1 col2 ... Col50

Спасибо, Навин

1 Ответ

1 голос
/ 24 июня 2011

Похоже, вам нужно определить новый шаблон RowDetailsTemplate в DataGrid. В разделе «Ресурсы» определите новый шаблон данных, в котором есть сетка с двумя строками:

  • Первая строка будет обычными данными: col1, col2, ... плюс кнопка, управляющая вторым рядом (кнопка «+»)
  • Во второй строке будет новый элемент управления, который наилучшим образом соответствует вашим потребностям (ItemsControl, ListBox, DataGrid, ...)

Кнопка «+» будет управлять видимостью второй строки и загрузкой данных для соответствующей строки.

Я надеюсь, что это поможет вам начать в правильном направлении.

Edit:

Иерархические данные должны быть частью данных в первой строке путем помещения их в какую-либо коллекцию.

public class Foo{
object Col1 {get;set;}
object Col2 {get;set;}

object Col50 {get;set;}
NestedFoo[] NestedData {get;set;}}

public class NestedFoo{
object NestedCol1 {get;set;}
object NestedCol2 {get;set;}

object NestedCol50 {get;set;}}

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

...