Teleerik-Grid Onrowselect Как получить удостоверение личности?

StackOverflow https://stackoverflow.com/questions/4409012

  •  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-файле. Спасибо и извините за мой плохой английский

Это было полезно?

Решение

Так ведь у меня есть лучший способ получить удостоверение личности:

  1. Свяжите функцию Onrowselect к вашей сетке
  2. Напишите следующий код в Onrowselect

    var dataItem = jQuery('#MyGridId').data('tGrid').dataItem(e.row);     
    alert(dataItem['Id']);
    

    DataItem - это карта Witch имеет все свойства модели сетки, чтобы вы получили все, что вы хотите

Спасибо, достаточно

Другие советы

От Telerik Great Demo..

Вы должны поместить идентификатор в 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top