如何确定哪个行或控件正在进行DropDownList读取数据调用

时间:2017-02-06 15:20:15

标签: kendo-ui kendo-grid

我在Kendo网格中有一个DropDownListFor控件,我需要该行中另一个元素的值,以便将参数传递给DropDownList的服务器端读取方法。它与示例here的设置类似。

以下是定义DropDownListFor的代码:

@(Html.Kendo().DropDownListFor(m => m)
.Name("LinkIdentifier")
.OptionLabel("---Select Form, etc.---")
.DataValueField("ID")
.DataTextField("Name")
.AutoBind(false)
.DataSource(source =>
{
     source.Read(read =>
     {
         read.Action("LinkTypeIdentifierDdl", "Alerts").Type(HttpVerbs.Post).Data("getCurrentLinkType");
     }).ServerFiltering(true);
})
)

这是在.Data:

中调用的javascript函数
function getCurrentLinkType() {
    var grid = $("#linkGrid").data("kendoGrid");
    var data = grid.dataSource.data();
    var dataItem = data[0];
    var valueForParameter = dataItem.SomeValue
    //--snipped for brevity
}

上面的问题是数据[0]。它只指向网格中的第一行,如果编辑任何其他行则不正确。如果我在这个方法中使用javascript调试器并查看“this”,那么它是引用的AJAX调用,而不是下拉控件。我不能指定“.Data(”getCurrentLinkType(this)“)”作为方法。

那么,我如何确定哪个行/控件调用了getCurrentLinkType?

1 个答案:

答案 0 :(得分:0)

没有从Grid传递到DropDownList到Data函数的上下文,所以你需要自己搞清楚。

我找到了两种方法。

1:

// If your grid is single Selectable(), use the current selection
var dataItem = grid.dataItem(grid.select());

2:

// If your grid is not Selectable or is multi Selectable, get the row/tr closest to the editor and then get the dataItem from that
var dataItem = grid.dataItem($("#LinkIdentifier").closest("tr"));