我有一个Kendo网格,每行都有一个按钮,单击该按钮时,我希望触发该URL动作来下载PDF文件。为了做到这一点,我需要将数据ID传递给URL操作,但是在获取引用时遇到很多麻烦。这是我的表定义:
@(Html.Kendo().Grid(Model.revisions)
.Name("RevisionsGrid")
.Columns(columns =>
{
columns.Bound(p => p.RevisionInfo.RevisionDate).Title("Date Modified");
columns.Bound(p => p.RevisionInfo.User.Name).Title("By User");
columns.Command(command => command.Custom("ViewPdf").Text("View PDF").Click("getPdf"));
})
.Sortable()
.Selectable()
.Events(e => e.Change("selection_change"))
.Pageable(p => p.PageSizes(new[] { 5, 10, 25 }))
.DataSource(dataSource => dataSource
.Server()
.Model(model => model.Id(p => p.RevisionInfo.Id)))
我需要对模型的RevisionInfo.Id的引用。我不想将其更改为Ajax绑定。
我尝试了解决方案here,但
this.dataItem
始终返回null。我还尝试使用对Kendo网格的引用而不是this
来获得相同的结果。function getPdf(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var revisionId= dataItem.RevisionId;
window.location.href = "@Url.Action("GetPdf","Reports")?revisionId=" + revisionId;
}
这似乎很简单,但我很茫然。有任何想法吗?
最佳答案
查询数据项时错过了kendo网格元素:
function getPdf(e) {
e.preventDefault();
var dataItem = $("#RevisionsGrid").data("kendoGrid").dataItem($(e.currentTarget).closest("tr"));
var revisionId= dataItem.RevisionId;
window.location.href = "@Url.Action("GetPdf","Reports")?revisionId=" + revisionId;
}
祝好运!
关于javascript - 使用服务器绑定(bind)时,如何从Kendo网格选择的行中获取数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27553987/