Asp.net mvc 4 Kendo MVC树状视图将所选节点传递到网格
我是剑道新手,我只是尝试将treeview的选定节点传递到网格,这是我的代码:Asp.net mvc 4 Kendo MVC树状视图将所选节点传递到网格,asp.net-mvc-4,treeview,kendo-asp.net-mvc,kendo-treeview,Asp.net Mvc 4,Treeview,Kendo Asp.net Mvc,Kendo Treeview,我是剑道新手,我只是尝试将treeview的选定节点传递到网格,这是我的代码: <div> @( Html.Kendo().TreeView() .Name("treeview") .BindTo((IEnumerable<TreeViewItemModel>)ViewBag.TreeData) .Events(events => events
<div>
@(
Html.Kendo().TreeView()
.Name("treeview")
.BindTo((IEnumerable<TreeViewItemModel>)ViewBag.TreeData)
.Events(events => events
.Select("onSelect")).ExpandAll(true)
)
</div>
@(Html.Kendo().Grid<DocunetViewer.Models.MyModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(c => c.ID);
columns.Bound(c => c.Name);
})
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("GetData", "Home").Data("getParameter")))
@(
Html.Kendo().TreeView()
.名称(“树视图”)
.BindTo((IEnumerable)ViewBag.TreeData)
.Events(Events=>Events
.Select(“onSelect”).ExpandAll(true)
)
@(Html.Kendo().Grid())
.名称(“网格”)
.列(列=>
{
columns.Bound(c=>c.ID);
columns.Bound(c=>c.Name);
})
.DataSource(DataSource=>DataSource
.Ajax()
.页面大小(20)
.Read(Read=>Read.Action(“GetData”、“Home”).Data(“getParameter”))
这是剧本:
<script>
function onSelect(e) {
BindGrid();
}
function BindGrid() {
$("#grid").data("kendoGrid").dataSource.read();
$("#grid").data("kendoGrid").refresh();
}
function getParameter() {
var treeview = $("#treeview").data("kendoTreeView");
var selectedNode = treeview.select();
var id = -1;
if (selectedNode.length != 0) {
var item = treeview.dataItem(selectedNode);
id = item.id;
}
return {
myId: id
};
}
函数onSelect(e){
BindGrid();
}
函数BindGrid(){
$(“#网格”).data(“kendoGrid”).dataSource.read();
$(“#网格”).data(“kendoGrid”).refresh();
}
函数getParameter(){
var treeview=$(“#treeview”).data(“kendoTreeView”);
var selectedNode=treeview.select();
变量id=-1;
如果(selectedNode.length!=0){
var item=treeview.dataItem(selectedNode);
id=item.id;
}
返回{
myId:id
};
}
我的问题是,我总是得到以前选择的节点,而不是当前选择的节点,那么问题是什么?我该如何解决它
提前感谢。在您的onSelect方法中,您可以在节点上使用如下JavaScript
var node = ($(e.node));
这里我得到了节点的id属性(您的节点上可能有不同的东西)
谢谢richardb,但是如何将此值传递给grid?您的意思是将其传递给grids数据源调用吗?只要getParameter javascript函数获得正确的节点,GetData方法就应该接收该值。BindGrid方法触发grids数据源刷新,然后反过来获得参数。您应该在那里输入。缺少什么?
var id = ($(e.node).data("id"));