0

私は他の誰かのコードからこれに取り組み始めました。そのため、データセットはいっぱいになりました。私の仕事は、データベースの値に基づいてロード時にノードを展開する機能を追加することでした。しばらく時間がかかりましたが、このJqueryは、私がそうするとはまったく思っていなかったときに機能しました。

 onPostInit: function(isReloading, isError) {
          $("#test-div").dynatree('getRoot').visit(function(node){
             if (node.data.IsExpandable === true) {
                 node.expand(true);               
             }                      
         });

IsExpandable は、データベースの bool db 列を表します。Jquery がその分野に対応できるとは思いませんでしたが、実現しました。コントローラーコードがそれを可能にしたことは知っています。誰でも理由を説明できますか? 今のところ、AsEnumerable() が何をしているのか、r.Field が何をしているのかについて、私は少し確信が持てないからです。コントローラーはこちら

 //Here Ds equals a filled dataset              //TreeData is model class w/ these properties
  var myData = Ds.Tables[0].AsEnumerable().Select(r => new TreeData
    {
        title = r.Field<string>("Name"),
        key = r.Field<int>("CategoryId"),
        ParentID = r.Field<int?>("ParentId"),
        IsExpandable = r.Field<bool?>("IsExpandable"),
        icon = false,
        addClass = "custom1" 
    });
4

1 に答える 1

0

ダイナツリー ツリーは、さまざまな方法で初期化できます。これらのいくつかは、javascript オブジェクトのツリーを提供する必要があります (オンライン ドキュメントのセクション 4.2 を参照)。あなたの例では、タイトル、キー、アイコン、および addClass プロパティは、dynatree プラグインがノードをレンダリングするために使用する標準プロパティです。ParentID および IsExpandable プロパティは、カスタム動作を追加するために開発者の 1 人がオブジェクトに追加したカスタム プロパティです。

AsEnumerableは、DataTableの行に対して LINQ クエリを使用できるようにする DataTable 拡張メソッドです。Fieldは、行内のフィールドにアクセスできるようにする DataRow メソッドです。

2 番目のスニペットでは、データ テーブルの行ごとにすべての dynatree ノード オブジェクトが作成されます。

于 2013-10-03T21:48:04.310 に答える