3

我在与 Treeview 相同的页面上有一个 Kendo Gridview。Gridview 包含与当前用户关联的客户端行。当 Gridview 中的一个客户端行被选中时,我触发 Treeview 再次读取 DataSource(selectedClient 是 Gridview 中的一行被选中时设置的 js 变量):

$("#folderTreeView").data("kendoTreeView").dataSource.read({ userId: _selectedClient })

TreeView 的重新绑定工作完美。问题是当新的 TreeView 具有带有嵌套文件夹的文件夹结构时。单击“展开”图标时,仅传递项目的 id,但我还需要从 GridView 传递当前选择的客户端(存储在 _selectedClient 中)。

那么,有没有办法在“展开”事件期间或以其他方式将附加参数(在这种情况下为 userId/_selectedClient)添加到传递给服务器的“任何内容”?

控制器

[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")
        )
)
4

2 回答 2

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>

阅读更多关于剑道文档的信息......

于 2013-01-30T19:49:40.997 回答
2

我终于找到了 ——http: //docs.kendoui.c​​om /getting-started/using-kendo-with/aspnet-mvc/migration/widgets/treeview

DataSource 事件如下所述...

<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>
于 2013-01-29T01:59:16.700 回答