Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取/设置Kendo treeview节点(Id和文本除外)的属性_C#_Asp.net_Asp.net Mvc_Kendo Ui_Kendo Treeview - Fatal编程技术网

C# 获取/设置Kendo treeview节点(Id和文本除外)的属性

C# 获取/设置Kendo treeview节点(Id和文本除外)的属性,c#,asp.net,asp.net-mvc,kendo-ui,kendo-treeview,C#,Asp.net,Asp.net Mvc,Kendo Ui,Kendo Treeview,我有一个剑道树视图: @(Html.Kendo().TreeView() .Name("treeview") .BindTo((IEnumerable<TreeViewItemModel>)ViewBag.MyTree) .Events(e => e.Select("treeSelect")) ) 但不是别的 TreeViewItemModel具有以下属性: Checked, Enabled, Encoded, Expanded, HasChildre

我有一个剑道树视图:

@(Html.Kendo().TreeView()
    .Name("treeview")
    .BindTo((IEnumerable<TreeViewItemModel>)ViewBag.MyTree)
    .Events(e => e.Select("treeSelect"))
)
但不是别的

TreeViewItemModel具有以下属性:

Checked, Enabled, Encoded, Expanded,
HasChildren, HtmlAttributes, Id,
ImageHtmlAttributes, ImageUrl, Items,
LinkHtmlAttributes, Selected, SpriteCssClass,
Text, Url
但我无法在javascript中访问这些内容(或者我不知道如何访问)

编辑

以下建议产生下图所示的错误:

children.Add(
  new TreeViewItemModel { Id = child.ip.id, 
                          Text = child.ip.mediumDescription, 
                         }.HtmlAttributes(new { data_value1 = "hey" })
            )

如果它是模型或ViewBag中的属性,则可以使用树视图上的
HtmlAttributes
传递数据:

@(Html.Kendo().TreeView()
    .Name("treeview")
    .BindTo((IEnumerable<TreeViewItemModel>)ViewBag.MyTree)
    .Events(e => e.Select("treeSelect")
    ).HtmlAttributes(new { data_value1 = ViewBag.Value1 })
)
这也扩展到行级条目,因为
TreeViewItemModel
还具有
HtmlAttributes
属性。因此,在行级别检索它们将如下所示:

function treeSelect(e) {
    var id = $(e.node).data("id");
    var value1 = $(e.node).data('value1');
    var text = this.text(e.node);
}
更新

对于特定行,人口如下所示:

function treeSelect(e) {
    var id = $(e.node).data("id");
    var value1 = $(e.node).data('value1');
    var text = this.text(e.node);
}
其语法意味着需要在之后设置自定义数据,即
HtmlAttributes.Add(“数据自定义”,“嘿”)

下面是一个简化的示例,它将直接在视图中运行(请注意,这只是为了演示目的,而不是最佳实践)

@{
var data=new List(){
新的TreeViewItemModel{Id=“1”,
Text=“1号”
}
};
data.First().HtmlAttributes.Add(“数据自定义”,“嘿”);
}
@(Html.Kendo().TreeView())
.名称(“树视图”)
.BindTo(数据)
.Events(e=>e.Select(“树选择”)
)
)
功能树选择(e){
var id=$(e.node).data(“id”);
调试器;
var custom=$(e.node).data('custom');
var text=this.text(e.node);
}
上面的简单设置第一项上的数据,您可能也希望迭代并设置预先存在的集合中的值

输出


这难道不会使每个节点的
数据值都相同吗?我在寻找类似于children.Add的东西(新的treevievietemmodel{Id=child.ip.Id,Text=child.ip.mediumDescription,Custom=“hey”})否,您可以这样做:
children.Add(new TreeViewItemModel{Id=child.ip.Id,Text=child.ip.mediumDescription,Custom=“hey”}.HtmlAttributes(new{Custom=“hey”})
。Custom可以设置为任何值。我将添加到更新中。)javascript变量变为未定义。没有任何名为“custom”的HTML属性,我可以通过将自定义字符串传递到现有的HTML属性(如“animation:whatever”)并捕获另一侧的“whatever”字符串来实现这一点。这是一个解决办法,但我一直在寻找一些看起来不像的东西one@chiapa抱歉,如果您将此添加到前面的
数据
中:
children.add(新建TreeViewItemModel{Id=child.ip.Id,Text=child.ip.mediumDescription,}.HtmlAttributes(新建{data_custom=“hey”})
它在您的js方法中作为
var value1=$(e.node)提供。data('custom');
@chiapa是每行相同的值,或者使用行中的现有数据?只是需要在以后完成,这取决于我的答案更新。
var value1 = $('#treeview').data('value1');
function treeSelect(e) {
    var id = $(e.node).data("id");
    var value1 = $(e.node).data('value1');
    var text = this.text(e.node);
}
@{
    var data = new List<TreeViewItemModel>() { 
                          new TreeViewItemModel { Id = "1", 
                          Text = "Number 1" 
                         }
};
data.First().HtmlAttributes.Add("data-custom", "hey");
}

@(Html.Kendo().TreeView()
    .Name("treeview")
    .BindTo(data)
    .Events(e => e.Select("treeSelect")
    )
)

<script> 
    function treeSelect(e) {
        var id = $(e.node).data("id");
        debugger;
        var custom = $(e.node).data('custom');
        var text = this.text(e.node);
    }
</script>