0

我正在尝试创建一个 Datagrid,其中第一列包含“+”号,下一列包含数据。当用户单击“+”号时,数据将从当前行获取,并且来自不同表的相应层次结构数据显示在当前行下方的新网格中。我尝试在线搜索,但找不到任何示例。

请建议我如何检查。

假设网格包含

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

当用户单击“+”号时。

它应该是 col1, Col2, Col3, Col4

然后进行 db 调用并根据上述值获取数据。

生成的网格应该是

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

谢谢,纳文

4

1 回答 1

1

看起来您必须在 DataGrid 中定义一个新的 RowDetailsTemplate。在 Resources 中定义一个新的 DataTemplate,其中有一个包含两行的网格:

  • 第一行将是常规数据 :col1, col2,... 加上控制第二行的按钮(“+”按钮)
  • 第二行将有一个最适合您需要的新控件(ItemsControl、ListBox、DataGrid...)

“+”按钮将控制第二行的可见性以及相应行的数据加载。

我希望这会让你朝着正确的方向开始。

编辑:

通过放入某种集合中,分层数据必须成为第一行数据的一部分。

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 设置为集合。

于 2011-06-24T15:39:41.680 回答