Asp.net mvc 4 Kendo MVC树状视图将所选节点传递到网格

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

我是剑道新手,我只是尝试将treeview的选定节点传递到网格,这是我的代码:

    <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"));