2013-03-26 138 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/