Domanda

Ciao io sono nuovo in asp.net MVC e controlli Telerik. Come posso ottenere il valore o.Id quando scatto nel braccio?

 <%= 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"))

             %>

nel codice js:

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

Ma dataItem è nullo e non v'è alcun valore id nel file html generato. Grazie e scusa per il mio cattivo inglese

È stato utile?

Soluzione

Quindi, dopo tutto quello che ho il modo migliore per ottenere id è:

  1. legano la funzione onRowSelect alla griglia
  2. scrivere accanto codice onRowSelect

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

    dataItem è una mappa strega hanno tutte le proprietà del modello di griglia in modo da ottenere tutto quello che vuoi

Questo è tutto, grazie

Altri suggerimenti

Telerik griglia demo .

Devi mettere la Id nella griglia Telerik come una colonna nascosta.

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

Si renderà un

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

E poi si ottiene in questo modo:

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

Note:

  • Lo so, è brutto.
  • Non so il motivo per cui le forze Telerik di chiamare il metodo di .DataKeys(...) se non c'è un documentato modo per ottenere il valore per la chiave definita.
  • Se si utilizza il raggruppamento o qualche altra caratteristica che ottiene più complicato, come la posizione della colonna nascosta varia a seconda della disposizione di raggruppamento.

Ho trovato un modo un po 'più elegante per fare questo che prende in prestito al largo della risposta di mmutilva.

Inizia mettendo nella colonna nascosta e l'evento di modifica allo stesso modo:

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

Ma poi nella funzione javascript, c'è un modo migliore per selezionare l'oggetto in realtà e poi la riga nascosta:

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

Fonte

Cambia la funzione onRowSelect a questo:

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

Il mittente sarà la griglia, e dalle args è possibile determinare quale elemento è stato selezionato.

Guardate al sito aiuto Telerik per informazioni dettagliate su come ottenere i dati utilizzando l'API lato client: http://www.telerik.com/help

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top