2011-06-24 39 views
0

我想创建一个Datagrid,其中第一列包含'+'号并且下一列包含数据。当用户点击'+'符号时,数据将从当前行中获取,并且来自不同表格的相应分层数据将显示在当前行下方的新网格中。我尝试在网上搜索,但找不到任何示例。Silverlight数据网格中的分层数据

请告诉我如何检查。

比方说电网包含

  • COL1 col2的.... Col50
  • COL1 col2的.... Col50

当用户点击 '+' 号。

应改为COL1,col2的,COL3,COL4

然后做一个DB调用,并获得基于上述值的数据。

产生的电网应该是

  • COL1 COL2 .... Col50 NestedCol1 NestedCol2 ... NestedCol20 NestedCol1 NestedCol2 ... NestedCol20 。 。 。 。 。
  • COL1 COL2 ... Col50

谢谢,纳文

回答

1

看起来你必须定义在DataGrid中的一个新的RowDetailsTemplate。在资源定义中有一个网格,两排新的DataTemplate:

  • 第一行还会定期数据:COL1,COL2,......加上控制第二排的按钮(' +“按钮)
  • 第二排将在一个新的控制最适合您的需要(ItemsControl中,列表框,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设置为集合。

+0

我无法读取rowdetails控件。内部数据网格。如何设置内部rowDetails的值? –

+0

DataGrid应该有一个RowDetailsTemplate属性。在资源中定义DataTemplate并将其设置为属性。 Danexxtone