在 Kendo Treeview 的 Expand 事件期间传递附加参数

Posted

技术标签:

【中文标题】在 Kendo Treeview 的 Expand 事件期间传递附加参数【英文标题】:Pass additional parameter during Expand event for Kendo Treeview 【发布时间】:2013-01-12 11:54:20 【问题描述】:

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

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

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

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

控制器

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

【问题讨论】:

【参考方案1】:

我今天发现了这个,它适用于 Grid,但我假设它适用于使用 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这里阅读更多...

【讨论】:

【参考方案2】:

我终于找到了—— http://docs.kendoui.com/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>

【讨论】:

您的Folder 参数需要哪些参数才能使其工作? areafirstNamelastName?执行此操作时,我没有收到任何其他数据。 Richie - 我在 .net 中使用 MVC 模式。因此,“.Action”正在构建一个链接以访问我的应用程序中的特定区域、控制器和方法([server.tld]/Portal/Folder/List)。在本例中,我的控制器中的“List”方法将接受 2 个参数:“id”(这是 Kendo 自动传递的文件夹 id)和“userId”,这是我使用 .Data 扩展名添加的附加自定义参数(它调用js函数“addData”并读取我定义的全局js变量(_selectedClient)。所以我只将两个参数传递给服务器,id和userId。帮助?

以上是关于在 Kendo Treeview 的 Expand 事件期间传递附加参数的主要内容,如果未能解决你的问题,请参考以下文章

Kendo UI TreeView动态启用/禁用dragAndDrop事件

当选中父级时,如何在Kendo TreeView中触发子节点的onCheck事件

网格中的 Kendo TreeView 显示“未定义”

Kendo UI 树视图绑定

Kendo UI Treeview 和 JSON

使用 id 打开 Kendo UI TreeView 节点