如何在KendoUI中获取选定的行值

我有一个kendoUI网格。

@(Html.Kendo().Grid<EntityVM>() .Name("EntitesGrid") .HtmlAttributes(new { style = "height:750px;width:100%;scrollbar-face-color: #eff7fc;" }) .Columns(columns => { columns.Bound(e => e.Id).Hidden().IncludeInMenu(false); columns.Bound(e => e.EntityVersionId).Hidden().IncludeInMenu(false); columns.Bound(e => e.Name).Width("70%").Title("Entity Name"); columns.Bound(e => e.EIN).Width("30%"); }) .ToolBar(toolBar => toolBar.Template("<a class='k-button k-button-icontext k-grid-add' id='addEntity'><span class='k-icon k-add'></span>Entity</a>" + "<a class='k-button k-button-icontext' id='editEntity'><span class='k-icon k-edit'></span>Edit</a>")) .DataSource(dataSource => dataSource .Ajax().ServerOperation(false) .Model(model => model.Id(e => e.Id)) .Read(read => read.Action("GetEntities", "Entity", new { projectId = Request.QueryString[DataKeyNameConstants.ProjectId] }))) .Sortable() .Scrollable() .Filterable() .Resizable(resize => resize.Columns(true)) .Reorderable(reorder => reorder.Columns(true)) .ColumnMenu() .Selectable(s => s.Mode(GridSelectionMode.Multiple)) .Events(events => events.Change("entSelChange")) ) 

现在,我需要从选定的行中获取EntityVersionId的值。 但不知道该怎么做。

这里是我的JavaScriptfunction

 $("#editEntity").click(function () { var entityGrid = $("#EntitesGrid").data("kendoGrid"); // what should I do from here }); 

更新:添加代码来循环所有行。

 function loadPreviousEntityVersion() { alert("sdfsdfsdf"); var entityGrid = $("#EntitesGrid").data("kendoGrid"); var data = entityGrid.dataSource.data(); for(var i = 0; i<data.length; i++) { var currentDataItem = data[i]; alert(dataItem.EntityVersionId); } } 

一种方法是使用Grid的select()dataItem()方法。

在单选的情况下, select()将返回一个可以传递给dataItem()行,

 var entityGrid = $("#EntitesGrid").data("kendoGrid"); var selectedItem = entityGrid.dataItem(entityGrid.select()); // selectedItem has EntityVersionId and the rest of your model 

对于多行select, select()将返回一个行数组。 然后,您可以遍历数组,并将各行传递到网格的dataItem()

 var entityGrid = $("#EntitesGrid").data("kendoGrid"); var rows = entityGrid.select(); rows.each(function(index, row) { var selectedItem = entityGrid.dataItem(row); // selectedItem has EntityVersionId and the rest of your model }); 

有更好的办法。 我正在使用它在我正在使用kendo angularJS指令和网格has'nt ID的页面中使用它…

 change: function (e) { var selectedDataItem = e != null ? e.sender.dataItem(e.sender.select()) : null; } 

我觉得需要检查,如果任何行被选中或没有? 下面的代码将检查它:

 var entityGrid = $("#EntitesGrid").data("kendoGrid"); var selectedItem = entityGrid.dataItem(entityGrid.select()); if (selectedItem != undefined) alert("The Row Is SELECTED"); else alert("NO Row Is SELECTED") 

如果你想select特定的元素使用下面的代码

 var gridRowData = $("<your grid name>").data("kendoGrid"); var selectedItem = gridRowData.dataItem(gridRowData.select()); var quote = selectedItem["<column name>"];