14

このコントロールを見ていると、データバインディング用の標準の .net "datasource" および "datamember" プロパティが欠けているようです。このコントロールはバインド可能ではありませんか? 特定のデータ ソースからツリービューを生成するカスタム関数を作成し、必要に応じてデータ オブジェクトを埋め込むことができると思いますが、それは「ベスト プラクティス」ですか? それとも、誰もがサードパーティのツリービュー コントロールを使用しているだけですか?

4

3 に答える 3

9

データバインディングがないという点で正しいです。その理由は、TreeView が階層データ構造であるためです。つまり、単純なリストではありません。その結果、databind オプションは List 構造とは言えません。

悲しいことに、独自の populate メソッドを作成するか、サード パーティのコントロールを購入する必要があります (最終的には、独自の populate メソッドを持つことになります)。

これは、 Binding Hierarchical Dataに関する適切な MSDN 記事です。

于 2008-12-16T23:38:24.597 に答える
5

Developer'sExpressのツリーコントロールを使用しています。データのテーブルを取得し、階層的に表示/編集します。
必要なのは、テーブルの主キーフィールドと親IDフィールドだけで、何がどこに行くのかを把握できます。

独自のコードをロールして独自のクラスを使用する場合も、同じことができます。

class Node
{
    System.Collections.Generic.List<Node> _Children;
    String Description;

    void Node()
    {
      _Children = new System.Collections.Generic.List<Node>();
    }

    public System.Collections.Generic.List<Node> Children()
    {
      return (_Children);
    }
}

class Program
{
    static void Main(string[] args)
    {
      System.Collections.Generic.List<Node> myTree = new System.Collections.Generic.List<Node>();
      Node firstNode = new Node();
      Node childNode = new Node();
      firstNode.Children().Add(childNode);
    }
}
于 2008-12-17T02:46:58.010 に答える
2

数レベルしかない場合は、データセットにいくつかのテーブルを設定し、列に DataRelation を設定します。次に、いくつかのネストされたループを使用して、ツリー ノードを作成します。

于 2008-12-16T23:47:27.060 に答える