2013-03-26 92 views
0

我需要一些帮助,从sql数据库填充树视图,简单的权利,只需看看成千上万的例子,并适应。问题是我已经尝试了大约一个星期来使用许多不同的样品,而我仍然无处可寻。我不是程序员,所以很难理解大家认为理所当然的一些基本知识。我开发了一个asp.net web应用程序,用于跟踪项目和管理的截止日期,以便应用程序完成并正在运行,但现在想要转移到Silverlight并获取来自Exco成员的请求,以便将整个结构显示为树形视图(当然,没问题,易如反掌)Silverlight - 从SQL数据库分层treeview vb.net

下面是这种情况:

各部门

Coffee Exco 
     Project 1 
      Action 1 
      Action 2 
     Project 2 
      Action 1 
    Credit Analytics 
     Project 3 
      Action 1 

目前我有一个需要存储的树视图中的数据2个表。我可以得到这些数据没有问题,它试图把它放入一个分层次的树状视图中,我似乎无法做到。在数据库

的样本数据:

Tab1ID|Department|Project|Deadline|Owner|Completed 
1 Coffee Exco  Project  3/31/2013Public   0 
2 Credit AnalyticsProject  4/20/2013Public   0 
3 Coffee Exco  Project  5/1/2013Public   0 

Tab2ID|Project|Action|ActionDeadline|Progress 
1Project 1  Action 1     10 
2Project 1  Action 2     0 
3Project 2  Action 1     0 

就像我说的,我已经尝试了许多不同的样品我现在不知道该怎么做,如果有人可以通过工序和工艺步骤走老狗假设他不是最聪明的,我会永远感激。我不介意通过XAML或代码隐藏来做到这一点。如果可能的话,我会很感激一个结束的例子。

亲切的问候,雅克

回答

0

是的,我记得有树状挣扎了好半天才能正常工作。

我发现的诀窍是让你的头部围绕物品模板。下面是我用一个例子:

<controls:TreeView Name="TreeViewCategories" 
         Height="372" HorizontalAlignment="Left" Margin="12,12,0,0" VerticalAlignment="Top" Width="419"> 
     <controls:TreeView.ItemTemplate> 
      <common:HierarchicalDataTemplate ItemsSource="{Binding ChildCategories}" > 
       <TextBlock Text="{Binding Name, Mode=TwoWay}" Name="TxtCategoryName" /> 
      </common:HierarchicalDataTemplate> 
     </controls:TreeView.ItemTemplate> 
    </controls:TreeView> 

以上是类别的树视图(让您拥有一个类别,该子类别中,然后分次类别内和它去)。请注意,它是每个级别的同一班级 - 即顶级是“类别”类型,其子类别也是“类别”类型,并在其上。我稍后会回到这一点。

所以我们有外部树视图控件。然后在里面我们有项目模板。 ItemsSource是需要注意的一点。这告诉绑定在哪里寻找子对象。对于我而言,每个类别都包含一个“ChildCategories”集合。

最后在里面,我有我想如何显示项目,这是在我的文本块。

我给树视图一个itemsSource,它只是顶级类别的集合,然后树视图将显示它们及其子内的内容。

我只使用了treeview,其中每个项目都是同一个类。这是一个相当直接的实现,因为在上面的ItemTemplate在每个级别都是相同的 - 它总是在类别中查找“ChildCategories”,无论它是顶级,二级还是其他任何级别。

在你的情况下,它会有所不同 - 你的最高水平将寻找项目。但是每个项目都会在内部寻找行动。

也回到顶部的表格结构 - 第一个表格中有部门,也许会有一个独立的部门表格。

你会有部门,其中寻找项目。这些项目将在其中寻找行动。

树状结构设置为在每个级别上始终具有相同的类 - 每个级别使用相同的ItemTemplate,因此查找相同的子级集合(在我的情况下,它总是在我们正在查找的内容中查找“ChildCategories”在)。

理念为您提供:

  1. 把某种形式在你的物品包装类的,所以它总是一样的。

  2. 尝试使用您当前的类,但添加属性客户端,所以他们都有,例如,一个名为“Children”的集合和一个名为“DisplayNameForTreeView”的字符串。

我希望能帮助您解决您的特定问题,当然这正是这个概念让我暂时停滞不前。

你可以尝试阅读这些: How can I have multiple types of children in a single Silverlight TreeView node? http://social.msdn.microsoft.com/Forums/en-US/silverlightcontrols/thread/5d648c2f-f636-4093-9616-883fe43d5524/