ASPXGridView ClientSideEvents Comment obtenir la valeur KeyField de Row sélectionnée

je suis en train de sélectionner des lignes de la grille Keyfield. de la valeur sur le côté client;

j'ai utilisé pour essayer de disciples et d'obtenir des résultats différents:

Méthode #1

<ClientSideEvents RowClick="function(s, e) {var key= grid.GetSelectedKeysOnPage()[0];}" />
//This gives previous selected rows value everytime

Méthode #2

<ClientSideEvents RowClick="function(s, e) { grid.GetRowValues(grid.GetFocusedRowIndex(), 'MyKeyFieldName', OnGetRowValues); }" />
//This gives previous selected row and also gives an error: "A primary key field specified via the KeyFieldName property is not found in the underlying data source. Make sure.. blabla" But the MyKeyFieldName is true and i dont want to make a callback, i dont want to use this method!

Méthode #3

<ClientSideEvents RowClick="function(s, e) { grid.GetRowValues(e.visibleIndex, 'MyKeyFieldName', OnGetRowValues); }">
//This gives the same result with Method #2

la question Est: Comment puis-je récupérer la valeur de KeyField de (pas précédente mais) la ligne courante sélectionnée lors de l'événement client RowClick sans callback ou postback?

14
demandé sur DortGen 2012-01-15 07:07:15

3 réponses

Méthode #2 et #3

ces Deux méthodes nécessitent un rappel pour le serveur.

assurez-vous que vous avez spécifié ASPxGridView.Propriété KeyFieldName qui est nécessaire pour l'opération de sélection de ligne.

Comment puis-je obtenir la valeur de KeyField du client row @ sélectionné sans un rappel ou un postback?

Gérer le côté client ASPxClientGridView.SelectionChanged de l'événement;

Déterminer une ligne qui vient d'être sélectionné par le "e.isSelected la propriété";

déterminer la valeur clé de la rangée via le côté client ASPxClientGridView.GetRowKey méthode.

le " E. visibleIndex" de la propriété comme un paramètre:

<ClientSideEvents SelectionChanged="function(s, e) {
    if (e.isSelected) {
        var key = s.GetRowKey(e.visibleIndex);
        alert('Last Key = ' + key);
    }
}" />
17
répondu Mikhail 2012-01-15 15:59:54

Comment faire en 3 étapes faciles.

dans mon cas, je veux obtenir le contenu d'un champ ('ID') à partir D'ASPxGridView lorsque L'utilisateur clique sur la ligne...

  1. Créer le ClientSideEvent pour la ligne et cliquez sur mettre "RowClick(s, e);" dans la fonction.
  2. créer la fonction réelle que l'événement appellera comme indiqué ci - dessous-et voici la partie délicate; n'utilisez pas GetFocusedRowIndex() pour obtenir l'index parce que c'est L'index focalisé. Utiliser e.visibleIndex

    function RowClick(s, e) {
        // Do callback to get the row data for 'ID' using current row.
        MyAspxGridView.GetRowValues(e.visibleIndex, 'ID', OnGetRowId);
    }
    
  3. créez votre appel de retour pour obtenir le champ que vous voulez. Je me fais 'ID'.

    function OnGetRowId(idValue) {
        alert('ID: ' + idValue.toString());
    }
    
1
répondu GWB_CODE_MAD 2014-12-18 18:24:58
function OnbtnOkClick(s, e) {
    grid.GetRowValues(grid.GetFocusedRowIndex(), 'FieldName1;FieldName2', OnGetRowValues);
}

function OnGetRowValues(values) {
    var fName1 = values[0];
    var fName2 = values[1];
    txt1.SetText(fName1);
}
0
répondu sms247 2013-10-23 07:20:17