如何在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>"];