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.NETMVCを使用しています。

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 を指定する必要があります。また、フラグがある場合GridSelectionModeは、配列Multipleをループしてスローする必要があることに注意してください...grid.select()

于 2012-09-21T18:10:04.930 に答える