我有一个带有自定义命令的剑道网格。现在的问题是我想针对特定行触发该自定义命令,但无法执行此操作。
这是我的代码:
网格:
@(Html.Kendo().Grid<RxConnectEntities.UserDTO>
().Name("UserList")
.Columns(columns =>
{
columns.Bound(p => p.UserID).Visible(false);
columns.Command(command => { command.Custom("Select").Click("OnSelectRow"); }).Width("80px");
columns.Bound(p => p.LastName).Title("Last Name");
columns.Bound(p => p.FirstName).Title("First Name");
})
.Filterable(filterable => filterable
.Extra(false)
.Operators(operators => operators
.ForString(str => str.Clear()
.StartsWith("Starts with")
.IsEqualTo("Is equal to")
.IsNotEqualTo("Is not equal to")
.Contains("Contains")
))
).ToolBar(x => x.Template("<a class='k-button k-button-icontext k-grid-export pull-right' title='Export to Excel' data-title='Users'><div class='k-grid-export-image k-icon'></div>Export To Excel</a>"))
.HtmlAttributes(new { @Style = "height:580px" })
.Sortable()
.Groupable()
.Scrollable()
.Events(events => events.DataBound("onDataBound").ColumnShow("onColumnShow"))
.Pageable(p => p.PageSizes(new int[] { 10, 20, 30, 40, 50 }).Enabled(true).Refresh(true))
.DataSource(dataSource => dataSource
.Ajax().ServerOperation(true).PageSize(20)
.Model(m => m.Id(p => p.PrescriberID))
.Read(read => read.Action("GetUserList", "User").Data("PassData"))
))
Javascript:
function OnSelectRow(e) {
var grid = $("#UserList").data("kendoGrid");
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
alert("User Detail: " + dataItem.UserID + " " + dataItem.FirstName + " " + dataItem.LastName");
}
现在,我有一个文本框和一个按钮,在文本框中,用户输入UserID,并且必须为该UserID触发kendo网格的onSelectRow事件。我知道这个把戏
var row = $("#" + gridName).data("kendoGrid").table.find('tr[data-id="' + id + '"]')
但这对我不起作用。它在行var中没有给我任何东西。
注意:我在c#中使用asp.net mvc5。
最佳答案
Kendo Grid不会将data-id
放入<tr>
元素中。它改用data-uid
,它是由DataSource
生成的GUID ID。
您可以通过执行以下操作获取项目的uid:
var id = 123; // get the ID from the text box
var gridWidget = $("#" + gridName).data("kendoGrid");
var dataItem = gridWidget.dataSource.get(id);
var uid = dataItem.uid;
var row = .table.find('tr[data-uid="' + uid + '"]');
当然,您可以将按钮单击处理程序简化为:
// called from grid action
function OnSelectRow(e) {
var grid = $("#UserList").data("kendoGrid");
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
showDetails(dataItem);
}
// called by button outside grid
function OnSelectRowManually() {
var id = 123; // get the ID from the text box
var dataItem = $("#UserList").data("kendoGrid").dataSource.get(id);
showDetails(dataItem);
}
// reusable code to show details
function showDetails(dataItem) {
alert("User Detail: "
+ dataItem.UserID
+ " "
+ dataItem.FirstName
+ " "
+ dataItem.LastName");
}
关于javascript - 明确触发Kendo网格的自定义命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26734769/