Teleerik-Grid Onrowselect Как получить удостоверение личности?
-
08-10-2019 - |
Вопрос
Привет, я новый в ASP.NET MVC и Teleerik Controls. Как я могу получить значение O.ID, когда я нажимаю на ряд?
<%= Html.Telerik().Grid(Model)
.Name("RolesGrid")
.DataKeys(keys => keys.Add(o => o.Id))
.Selectable()
.Columns(columns =>
{
columns.Bound(o => o.Name);
columns.Bound(o => o.Description);
})
.Pageable()
.ClientEvents(events => events
.OnRowSelect("onRowSelect"))
%>
В коде JS:
function onRowSelect(e) {
var ordersGrid = $('#RolesGrid').data('tGrid');
var row = e.row;
var dataItem = ordersGrid.dataItem(row);
alert(dataItem);
}
Но dataitem - это нулевой, и нет значения идентификатора в сгенерированном HTML-файле. Спасибо и извините за мой плохой английский
Решение
Так ведь у меня есть лучший способ получить удостоверение личности:
- Свяжите функцию Onrowselect к вашей сетке
Напишите следующий код в Onrowselect
var dataItem = jQuery('#MyGridId').data('tGrid').dataItem(e.row); alert(dataItem['Id']);
DataItem - это карта Witch имеет все свойства модели сетки, чтобы вы получили все, что вы хотите
Спасибо, достаточно
Другие советы
Вы должны поместить идентификатор в Teleerik Grid в виде скрытой колонны.
// ...
.DataKeys(keys => keys.Add(o => o.Id))
.Selectable()
.Columns(columns =>
{
columns.Bound(o => o.Id).Hidden();
columns.Bound(o => o.Name);
columns.Bound(o => o.Description);
})
// ...
.ClientEvents(events => events.OnRowSelect("onRowSelect"))
Это окажет
<td style="display: none; ...">...</td>
А потом вы понимаете это:
function onRowSelect(e) {
var id = e.row.cells[0].innerHTML;
// ...
}
Примечания:
- Я знаю, это некрасиво.
- Я не знаю, почему Телерик заставляет вас позвонить
.DataKeys(...)
Метод, если нет документированный способ получить значение для определенного ключа. - Если вы используете группирующую группу или какую-то другую функцию, он становится сложнее, так как положение скрытого столбца варьируется в зависимости от компоновки группировки.
Я нашел немного более элегантный способ сделать это, что заимствовало от ответа ММУТВА.
Начните с помощью скрытой колонны и мероприятие изменить так же:
.DataKeys(keys => keys.Add(o => o.Id))
.Selectable()
.Columns(columns =>
{
columns.Bound(o => o.Id).Hidden();
columns.Bound(o => o.Name);
columns.Bound(o => o.Description);
})
.ClientEvents(events => events.OnRowSelect("onRowSelect"))
Но затем в функции JavaScript есть лучший способ на самом деле выбрать объект, а затем скрытый ряд:
function onRowSelect(e) {
var grid = e.sender;
var currentitem = grid.dataItem(this.select());
var Id = currentitem.Id;
//then do whatever with the ID variable
}
Изменить функцию Onrowselect к этому:
function onRowSelect(sender, args){...}
Отправитель будет сеткой, а из ARGS вы можете определить, какой элемент был выбран.
Посмотрите на сайт помощи Teleerik для получения подробной информации о том, как получить данные с помощью API на стороне клиента:http://www.telerik.com/help.