ASPXGridView ClientSideEvents Comment Obtenir la Ligne Sélectionnée est Keyfield. Valeur
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 obtenir Keyfield. Valeur (sans précédent mais) courant de ligne sélectionnée au client RowClick événement sans rappel ou de publication?
OriginalL'auteur DortGen | 2012-01-15
Vous devez vous connecter pour publier un commentaire.
Ces deux méthodes nécessitent un rappel pour le serveur.
Assurez-vous que vous avez spécifié le ASPxGridView.KeyFieldName propriété qui est nécessaire pour la sélection d'une ligne d'opération.
Gérer le côté client ASPxClientGridView.SelectionChanged événement;
Déterminer une ligne qui vient d'être sélectionné par le “e.isSelected de la propriété”;
Déterminer la ligne de keyValue par le côté client ASPxClientGridView.GetRowKey méthode.
Passer le “e.visibleIndex” de la propriété comme un paramètre:
Avez-vous essayé ma solution? Ce résultat est-il produire?
Pour info si vous voulez utiliser Mikhaïl la solution; le problème de l'utilisation de l'événement SelectionChanged: lorsque l'utilisateur de trier ou de filtrer; la clé stockée n'est pas mis à jour (SelectionChanged événement n'est pas déclenché)
oups désolé; je veux dire la visibleIndex sera changé après le tri, etc donc, quand vous appelez ASPxClientGridView.GetRowValues avec la mise en cache visibleIndex, vous obtiendrez la mauvaise ligne
Sa fait un moment, j'ai omis le problème en quelque sorte, et que "cerf-volant" est mentionné, à l'aide de Mikhaïl la solution est correcte mais untrustable pour le tri, le filtrage des conditions. J'ai trouver la solution la plus évidente par l'abandon de l'utilisation de DevEx contrôles.. Ils sont beaux, mais très mauvais pour la personnalisation. Tels que, la Grille de contrôle n'a pas "RowDataBound" de l'événement. DevEx développeurs de conseiller certains autres événements pour des besoins spécifiques, mais leurs conseils ne sont pas adaptés à toutes les situations. RowDataBound est un événement qui est ce, pas de tout autre événement. Et ainsi de suite. J'ai changé l'itinéraire pour MVC+jQuery maintenant, et c'est une brillante du monde en développement web.
OriginalL'auteur Mikhail
Comment en 3 étapes faciles.
Dans mon cas, je souhaite obtenir le contenu d'un champ ('ID') à partir de ASPxGridView lorsque l'utilisateur clique sur la ligne...
Créer de la fonction réelle de l'événement sera appel comme indiqué ci-dessous - et c'est là la partie la plus délicate; ne pas utiliser de GetFocusedRowIndex() pour obtenir l'index parce qu'il est à la PORTÉ de l'indice. L'utilisation de e.visibleIndex
Créer votre appel en arrière pour obtenir le champ que vous souhaitez. Je me fais 'ID'.
OriginalL'auteur GWB_CODE_MAD
OriginalL'auteur sms247