0

我从别人的代码开始研究这个。所以数据集被填满了。我的工作是添加功能以根据数据库值在 Load 上扩展节点。我花了一段时间,当我完全不认为我会时,这个 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 属性是您的开发人员之一添加到对象以添加自定义行为的自定义属性。

AsEnumerable是一种 DataTable 扩展方法,可让您对 DataTable 中的行使用 LINQ 查询。Field是一种 DataRow 方法,可让您访问一行中的字段。

因此,第二个片段中发生的事情是为数据表中的每一行创建了所有 dynatree 节点对象。

于 2013-10-03T21:48:04.310 回答