telerik-grid onRowSelect如何获取id?

San*_*huk 4 asp.net-mvc telerik-grid

嗨,我是asp.net mvc和telerik控件的新手.当我点击行时,我怎么能得到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"))

             %>
Run Code Online (Sandbox Code Playgroud)

在js代码中:

 function onRowSelect(e)   {
        var ordersGrid = $('#RolesGrid').data('tGrid');  
        var row = e.row;
        var dataItem = ordersGrid.dataItem(row);
        alert(dataItem);
    }
Run Code Online (Sandbox Code Playgroud)

但是dataItem为null,并且生成的html文件中没有id值.谢谢,抱歉我的英语不好

San*_*huk 12

所以我毕竟获得id的最好方法是:

  1. 将onRowSelect函数绑定到网格
  2. 在onRowSelect中编写下一个代码

    var dataItem = jQuery('#MyGridId').data('tGrid').dataItem(e.row);     
    alert(dataItem['Id']);
    
    Run Code Online (Sandbox Code Playgroud)

    dataItem是一个具有网格模型所有属性的地图,因此您可以获得所需的一切

就这些,多谢


mmu*_*lva 10

来自telerik网格演示.

您必须将ID作为隐藏列放在telerik网格中.

// ...
.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"))
Run Code Online (Sandbox Code Playgroud)

它将呈现一个

<td style="display: none; ...">...</td>
Run Code Online (Sandbox Code Playgroud)

然后你得到这样的:

function onRowSelect(e)   {
    var id = e.row.cells[0].innerHTML;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 我知道,这很难看.
  • 我不知道为什么.DataKeys(...)如果没有记录的方法来获取定义的键的值,telerik会强制您调用该方法.
  • 如果您使用分组或其他功能,则会变得更加棘手,因为隐藏的列位置会因分组排列而异.