2013-10-03 74 views
0

我開始從別人的代碼開始工作。所以數據集被填滿了。我的工作是添加基於數據庫值在Load上展開節點的功能。我花了一段時間,當我完全不認爲我會的時候,這個Jquery工作。DynaTree動態展開節點

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

IsExpandable表示我的數據庫中的bool數據庫列。我並不認爲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" 
    }); 

回答

0

dynatree樹可以用許多不同的方式初始化。其中一些要求您提供一個javascript對象樹(請參閱section 4.2 of the online documentation)。在你的例子中,title,key,icon和addClass屬性是dynatree插件用來呈現節點的標準屬性。 ParentID和IsExpandable屬性是您的開發人員添加到對象以添加自定義行爲的自定義屬性。

AsEnumerable是一個DataTable擴展方法,它允許您對DataTable中的行使用LINQ查詢。 Field是一種DataRow方法,可讓您訪問一行中的字段。

所以第二個片段中發生的事情是所有的dynatree節點對象都是爲數據表中的每一行創建的。

+0

非常感謝你,這有助於清理事情。 – CSharper