4

こんにちは私はasp.netmvcと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"))

             %>

jsコードで:

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

ただし、dataItemはnullであり、生成されたhtmlファイルにはid値がありません。私の悪い英語をありがとうそしてごめんなさい

4

4 に答える 4

12

結局のところ、IDを取得するための最良の方法は次のとおりです。

  1. onRowSelect関数をグリッドにバインドします
  2. onRowSelectに次のコードを書く

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

    dataItemはマップウィッチであり、グリッドモデルのすべてのプロパティを備えているため、必要なものをすべて入手できます。

これで全部です、ありがとう

于 2011-06-17T07:53:56.863 に答える
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"))

レンダリングされます

<td style="display: none; ...">...</td>

そして、あなたはそれを次のように取得します:

function onRowSelect(e)   {
    var id = e.row.cells[0].innerHTML;
    // ...
}

ノート:

  • 私は知っている、それは醜いです。
  • I don't know why the telerik forces you to call the .DataKeys(...) method if there's no documented way to get the value for the key defined.
  • If you use grouping or some other feature it gets trickier, as the hidden column position varies depending on the grouping arrangement.
于 2011-02-09T15:20:40.640 に答える
1

I found a slightly more elegant way to do this that borrows off of mmutilva's answer.

Start by putting in the hidden column and the change event in the same way:

.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"))

But then in the javascript function, there is a better way to actually select the object and then the hidden row:

    function onRowSelect(e)   {
        var grid = e.sender;
        var currentitem = grid.dataItem(this.select());
        var Id = currentitem.Id;
        //then do whatever with the ID variable
    }

Source

于 2015-06-24T15:48:14.620 に答える
0

関数onRowSelectを次のように変更します。

function onRowSelect(sender, args){...}

送信者はグリッドになり、引数から選択されたアイテムを判別できます。

クライアントサイドAPIを使用してデータを取得する方法の詳細については、Telerikヘルプサイトを参照してください: http ://www.telerik.com/help

于 2010-12-10T13:03:13.450 に答える