2

我有一个使用下拉列表的 KendoUI 网格。所以网格的每个元素都有一个下拉列表。DropDownList 在局部视图中定义。

@(Html.Kendo().DropDownList()
    .Name("positions")
    .DataValueField("EmpId")
    .DataTextField("EmpName")
    .DataSource(source =>
    {
        source.Read(read =>
        {
            read.Action("_AjaxGetEmps", "Emp", new { Empid = <empid of currently selected grid row> });
        }).ServerFiltering(true);
    })
)

我在哪里放什么?我要做的是从当前选定行的网格中引用一个字段。网格的每一行在下拉列表中可以有不同的值,我需要将值传递给 AjaxGetEmps 方法。我正在使用带有 Razor 视图引擎的 ASP.NET MVC。

4

1 回答 1

3

您必须Empid通过 Data 方法传递参数,而不是像这样直接提供参数:

@(Html.Kendo().DropDownList()
    .Name("positions")
    .DataValueField("EmpId")
    .DataTextField("EmpName")
    .DataSource(source =>
    {
        source.Read(read =>
        {
            read.Action("_AjaxGetEmps", "Emp")
                .Data("getCurrentEmpid"); // this links to a javascript function 
                                          // which will get the current emp id
        }).ServerFiltering(true);
    })
)

并且javascript函数应该这样实现:

function getCurrentEmpid() {
    var grid = $("#idGrid").data("kendoGrid"); // where "idGrid" is the id of your grid

    return {
        Empid: grid.dataItem(grid.select()).Empid
    }
}

此处grid.select()返回网格中选定的行并grid.dataItem(row)获取与该行关联的数据。所以这里Empid应该是你的模型类的 id。另请注意,如果你有标志GridSelectionModeMultiple你将不得不循环抛出grid.select()数组......

于 2012-09-21T18:10:04.930 回答