grid - mvc - kendo ui for jquery demos
cómo obtener el valor de la fila seleccionada en el KendoUI (4)
Creo que hay que verificar si alguna fila está seleccionada o no? El siguiente código lo comprobaría:
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")
Tengo una grilla de 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"))
)
ahora, necesito obtener el valor de EntityVersionId de la fila seleccionada. Pero no estoy seguro de cómo hacerlo.
Aquí está mi función javascript
$("#editEntity").click(function () {
var entityGrid = $("#EntitesGrid").data("kendoGrid");
// what should I do from here
});
ACTUALIZACIÓN: agregar código para hacer un bucle de todas las filas.
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);
}
}
Hay mejor manera Lo estoy usando en páginas donde estoy usando las directivas de kendo angularJS y las grillas no tienen ID ...
change: function (e) {
var selectedDataItem = e != null ? e.sender.dataItem(e.sender.select()) : null;
}
Si desea seleccionar un elemento en particular use el siguiente código
var gridRowData = $("<your grid name>").data("kendoGrid");
var selectedItem = gridRowData.dataItem(gridRowData.select());
var quote = selectedItem["<column name>"];
Una forma es usar los métodos select()
y dataItem()
.
En el caso de selección única, select()
devolverá una sola fila que se puede pasar a dataItem()
var entityGrid = $("#EntitesGrid").data("kendoGrid");
var selectedItem = entityGrid.dataItem(entityGrid.select());
// selectedItem has EntityVersionId and the rest of your model
Para la selección de varias filas, select()
devolverá una matriz de filas. Luego puede iterar a través de la matriz y las filas individuales se pueden pasar al dataItem()
la cuadrícula.
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
});