我在Treeview的同一页面上有一个Kendo Gridview。 Gridview包含与当前用户关联的客户端行。当选择Gridview中的一个客户端行时,我会触发Treeview再次读取DataSource(当选择Gridview中的行时,selectedClient是一个js变量集):
$("#folderTreeView").data("kendoTreeView").dataSource.read({ userId: _selectedClient })
TreeView的重新绑定非常有效。问题是当新的TreeView具有带嵌套文件夹的文件夹结构时。单击“展开”图标时,只传递项目的ID,但我也需要从GridView传递当前选定的客户端(存储在_selectedClient中)。
那么,有没有办法在“展开”事件或其他方式中将其他参数(在这种情况下为userId / _selectedClient)添加到服务器中的“what”?
控制器
[HttpPost]
public virtual JsonResult List(int? userId, int? id)
{
....
}
剃刀
@(Html.Kendo().TreeView()
.Name("folderTreeView")
.DataTextField("Name")
.DataSource(dataSource => dataSource
.Read(read => read.Action("List", "Folder", new { area = "Portal" }).Type(HttpVerbs.Post)
)
)
.Events(events => events
.Expand("onSelect")
)
)
答案 0 :(得分:3)
我今天发现了这个,它适用于网格,但我认为它可以与使用DataSource的任何其他工作正常:
@(Html.Kendo().Grid<MvcApplication1.Models.Product>()
.Name("Grid")
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("Products_Read", "Home")
.Data("additionalData") // the name of the JavaScript function which will return the additional data
)
)
.Pageable()
)
<script>
function additionalData() {
return {
firstName: "John",
lastName: "Doe"
};
}
</script>
在The Kendo Docs ...
上阅读更多内容答案 1 :(得分:2)
我终于找到了 - http://docs.kendoui.com/getting-started/using-kendo-with/aspnet-mvc/migration/widgets/treeview
数据源事件,如下所述......
<script>
function addData(data) {
return { userId: _selectedClient };
}
</script>
<div class="demo-section">
@(Html.Kendo().TreeView()
.Name("folderTreeView")
.DataTextField("Name")
.DataSource(dataSource => dataSource
.Read(read => read
.Action("List", "Folder", new { area = "Portal" })
.Type(HttpVerbs.Post)
.Data("addData")
)
)
)
</div>