0

SQLデータベースからツリービューを作成するのに助けが必要です。単純に、何千もの例を見て適応してください。問題は、約 1 週間、多くのさまざまなサンプルを使用しようとしましたが、まだどこにも行きません. 私はプログラマーではないので、誰もが当たり前だと思っている基本を理解するのは難しいです。私は、プロジェクトと管理者が精査する期限を追跡するasp.net Webアプリを開発しました。アプリケーションは完成し、機能していますが、Silverlightに移行したいと考えており、excoメンバーから構造全体をツリービュー (確かに、問題ありません。パイのように簡単です)

シナリオは次のとおりです。

すべての部門

  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 またはコード ビハインドのいずれかを使用してもかまいません。可能であれば、エンドツーエンドの例をいただければ幸いです。

よろしく、ジャック

4

1 に答える 1

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 を指定すると、ツリー ビューにそれらとその子が表示されます。

各アイテムが同じクラスであるツリービューのみを使用しました。上記の ItemTemplate はすべてのレベルで同じであるため、これはかなり単純な実装です。トップ レベル、2 番目のレベル、またはその他のレベルに関係なく、問題のカテゴリ内で常に「ChildCategories」を探します。

あなたの場合は異なります-トップレベルはプロジェクトを探します。しかし、各プロジェクトはその中のアクションを探します。

また、上部のテーブル構造に戻ります-最初のテーブル内に部門があります。おそらく、部門の別のテーブルを持つ方がよりピューリタンになるでしょう。

その中にプロジェクトを探す部門があります。そして、プロジェクトはその中のアクションを探します。

ツリービューは、すべてのレベルで常に同じクラスを持つように設定されています。すべてのレベルは同じ ItemTemplate を使用するため、同じ子のコレクションを探します (私の場合、見ているものの中で常に "ChildCategories" を探します)。

あなたのためのアイデア:

  1. アイテムの周りに何らかの形式のラッパー クラスを配置して、常に同じになるようにします。

  2. 現在のクラスをそのまま使用して、クライアント側のプロパティを追加してみてください。たとえば、「Children」というコレクションと「DisplayNameForTreeView」という文字列がすべて含まれるようにします。

それがあなたの特定の問題を理解するのに役立つことを願っています.

これらを読んでみてください: 単一の Silverlight TreeView ノードに複数の種類の子を含めるにはどうすればよいですか? http://social.msdn.microsoft.com/Forums/en-US/silverlightcontrols/thread/5d648c2f-f636-4093-9616-883fe43d5524/

于 2013-03-27T15:57:31.100 に答える