Question

Salut je suis nouveau dans asp.net mvc et contrôles Telerik. Comment puis-je obtenir la valeur o.Id quand je clique sur la ligne?

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

             %>

dans le code js:

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

Mais DataItem est nulle et il n'y a pas identifiant dans le fichier html généré. Merci et désolé pour mon mauvais anglais

Était-ce utile?

La solution

Alors, après tout ce que j'ai la meilleure façon d'obtenir id est:

  1. bind fonction onRowSelect à votre réseau
  2. écrire le code suivant dans onRowSelect

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

    DataItem est une carte sorcière ont toutes les propriétés du modèle de grille de sorte que vous obtenez tout ce que vous voulez

C'est tout, merci

Autres conseils

De telerik grille démo .

Vous devez mettre l'identification dans la grille de telerik comme une colonne cachée.

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

Il rend une

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

Et vous obtenez comme ceci:

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

Notes:

  • Je sais, c'est moche.
  • Je ne sais pas pourquoi les forces de Telerik vous appeler la méthode de .DataKeys(...) s'il n'y a pas documenté moyen d'obtenir la valeur de la clé définie.
  • Si vous utilisez le regroupement ou une autre caractéristique, il est plus compliqué, car la position de la colonne cachée varie en fonction de l'arrangement de groupement.

J'ai trouvé une façon un peu plus élégante de le faire qui emprunte au large de la réponse mmutilva.

Commencez par mettre dans la colonne cachée et l'événement de changement de la même manière:

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

Mais dans la fonction javascript, il y a une meilleure façon de sélectionner en fait l'objet, puis la ligne cachée:

    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

Modifier la fonction onRowSelect à ceci:

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

L'expéditeur sera la grille et des args vous pouvez déterminer quel élément a été sélectionné.

Rechercher sur le site d'aide Telerik pour des informations détaillées sur la façon d'obtenir les données en utilisant l'API côté client: http://www.telerik.com/help

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top