web-dev-qa-db-fra.com

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

J'essaie d'obtenir la valeur KeyField des lignes de grille sélectionnées côté client;

J'avais l'habitude d'essayer de suivre et d'obtenir différents résultats:

Méthode n ° 1

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

Méthode n ° 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 n ° 3

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

La question qui se pose est la suivante: comment puis-je obtenir la valeur KeyField de la ligne actuellement sélectionnée (pas la précédente mais la précédente) lors de l'événement client RowClick sans rappel ou publication?

14
DortGen

Méthode n ° 2 et n ° 3

Ces deux méthodes nécessitent un rappel sur le serveur.

Vérifiez que vous avez spécifié la propriété ASPxGridView.KeyFieldName requise pour l'opération de sélection de ligne.

Comment puis-je rassembler la valeur KeyField de la ligne sélectionnée @ client sans rappel ou publication?

Gérer le côté client ASPxClientGridView.SelectionChanged event;

Déterminez une ligne qui vient d'être sélectionnée via la propriété “ e.isSelected ”;

Déterminez la valeur keyValue de la ligne via la méthode ASPxClientGridView.GetRowKey du côté client.

Passez la propriété “ e.visibleIndex ” en tant que paramètre:

<ClientSideEvents SelectionChanged="function(s, e) {
    if (e.isSelected) {
        var key = s.GetRowKey(e.visibleIndex);
        alert('Last Key = ' + key);
    }
}" />
18
Mikhail

Comment faire en 3 étapes faciles.

Dans mon cas, je souhaite obtenir le contenu d'un champ ("ID") à partir d'ASPxGridView lorsque l'utilisateur clique sur la ligne ...

  1. Créez le ClientSideEvent pour ligne cliquez et mettez "RowClick (s, e);" dans la fonction.
  2. Créez la fonction réelle que l'événement appellera comme indiqué ci-dessous - et voici la partie la plus délicate; n'utilisez pas GetFocusedRowIndex () pour obtenir l'index car il s'agit de l'index FOCUSED. Utilisez 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 rappel pour obtenir le champ que vous voulez. Je vais chercher une 'identité'.

    function OnGetRowId(idValue) {
        alert('ID: ' + idValue.toString());
    }
    
1
GWB_CODE_MAD
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
sms247