在一个 MVC4 项目中,我有一个剑道网格,它会在选择一行时触发一个事件。
<div id="datagrid">
@(Html.Kendo().Grid<SustIMS.Models.StretchModel>()
.Name("datagrid_Stretches")
.Columns(columns =>
{
columns.Bound(s => s.StretchCode).Title(ViewBag.lblCode).Width(80);
columns.Bound(s => s.StretchMediumDescription).Title(ViewBag.lblDescription);
...
})
.Events(e => e.Change("onChange")) <--------- here's the event
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(15)
.Read(read => read.Action("GetStretches", "MasterData"))
)
)
</div>
因此,当我选择一行时,调用 onChange
函数:
function onChange() {
var code = this.dataItem(this.select()).StretchCode;
$.get('@Url.Content("getStretchCode")',
{ "code": code });
}
在我的 Controller 中,检索代码并用它完成一些操作。
public void getStretchCode(string code)
{
currentStretch.RoadComponentCode = code;
...
}
这很好用。问题是,每次我选择不同的行时都会触发事件,但如果我选择以前选择的行,则不会触发事件,我无法获取该行的代码。
有什么帮助吗?
最佳答案
在您的网格中添加 .Selectable()
,这样您就可以选择之前的行。
@(Html.Kendo().Grid<SustIMS.Models.StretchModel>()
.Name("datagrid_Stretches")
.Columns(columns =>
{
columns.Bound(s => s.StretchCode).Title(ViewBag.lblCode).Width(80);
columns.Bound(s => s.StretchMediumDescription).Title(ViewBag.lblDescription);
...
})
.Selectable(selectable => selectable
.Type(GridSelectionType.Row) <--------- Add This
)
.Events(e => e.Change("onChange"))
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(15)
.Read(read => read.Action("GetStretches", "MasterData"))
)
)
脚本
function onChange() {
var code = this.dataItem(this.select()).StretchCode;
$.post('@Url.Content("getStretchCode")',
{ "code": code });
}
关于javascript - 每行选择仅触发一次 Kendo 网格更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24997246/