我在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?
答案 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"));