Comment obtenir un jqGrid valeur de la cellule lors de l'édition
Comment obtenir un jqGrid valeur de cellule lorsque dans l'édition en ligne (getcell et getRowData retourne le contenu de la cellule et non pas le actuall valeur de l'élément d'entrée).
Vous devez vous connecter pour publier un commentaire.
Général de la fonction pour obtenir la valeur de la cellule avec la ligne id et id de cellule
Créer dans votre code js fonction:
Exemple d'utilisation:
Douteux, mais qui fonctionne.
Voici un exemple de solution de base avec une fonction utilisateur.
...
Après de nombreuses heures de chagrin j'ai trouvé ceci pour être la solution la plus simple. Appeler cette fonction avant d'aller chercher les données de ligne:
Il va enregistrer toute modification en cours et ne sera pas jeter si il n'y a pas de lignes dans la grille.
$('#yourgrid').jqGrid("getCell", rowId, 'column')
.Comme vous l'avez indiqué, selon la documentation jqGrid pour getCell et getRowData:
Comme aucune de ces méthodes sera de retour de vos données, vous devez les utiliser pour retourner le contenu de la cellule elle-même avant de l'analyser, peut-être à l'aide de jQuery. Ce serait bien si une future version de jqGrid pourrait fournir un moyen de faire partie de cette analyse elle-même, et/ou de fournir une API pour le rendre plus simple. Mais d'un autre côté est-ce vraiment un cas d'utilisation qui arrive souvent?
Alternativement, si vous pouvez expliquer votre problème plus en détail, il peut y avoir d'autres options.
Essayer cela, il vous donnera particulier la valeur de la colonne
jQuery('#GridTableId').getRowData(id)['name']
au cas où quelqu'un fait la même erreur que j'ai faitFondamentalement, vous devez enregistrer la ligne avant d'accéder au contenu de la cellule.
Si vous le faites, alors vous obtenez la valeur de la cellule au lieu de le balisage qui vient quand la cellule est en mode édition.
Hi, j'ai rencontré ce problème aussi. Enfin, j'ai résolu ce problème en jQuery. Mais la réponse est liée à la grille elle-même, pas une commune. Espérons que cela aide.
Ma solution comme ceci:
.val()
n'existe pas basé sur votre sélecteur de mine conteneur HTML que j'étais après le innerText sur elle à l'aide de.text()
plutôt fait le tour. @LLQ merci de me pointer dans la bonne direction!vous pouvez l'utiliser directement....
C'est ma solution:
J'ai une solution:
1. L'utilisation de ce.valeur pour obtenir l'actuelle édition de la valeur dans l'édition de ligne.
2. Enregistrer la valeur de la cellule à un champ caché lorsque la cellule a perdu son accent.
3. Lire le champ caché quand vous en avez besoin.
Le code:
Bonne Chance
Vous pouvez obtenir à partir de la manière suivante...!!
Dans mon cas, le contenu de ma cellule est HTML en tant que résultat d'un formateur. Je veux que la valeur de l'intérieur de la balise d'ancrage. Par l'extraction du contenu de la cellule et ensuite, la création d'un élément de l'html via jQuery je peux alors accéder à la valeur brute en l'appelant .texte() sur mon nouvellement créé élément.
ma réponse est basée sur @LLQ réponse, mais étant donné que dans mon cas, mon cellContents n'est pas une entrée j'avais besoin d'utiliser
.text()
au lieu de.val()
pour accéder à la valeur brute, donc je pensais que je poste ceci dans le cas où quelqu'un d'autre est à la recherche d'un moyen d'accéder à la valeur brute de la mise en forme jqGrid cellule.elle est très simple d'écrire du code en vous grid.php et passer la valeur à un autre page.php
de cette façon, vous pouvez obtenir d'autres cellules de la colonne vaue
mais chacun peut faire comme la fenêtre.open(chemin pour passer de la valeur....) dans la fantaisie ou de la boîte de clor boîte?
Je pense qu'une extension de l'obtenir pour vous.
récupération-original-ligne-données-de-jqgrid
Je pense une meilleure solution que d'utiliser getCell qui comme vous le savez certains retours html en mode de programmation est d'utiliser jquery pour accéder aux champs directement. Le problème avec le fait d'essayer d'analyser, comme vous faites, c'est qu'il ne fonctionne que pour les champs de saisie (pas des choses comme choisir), et il ne fonctionnera pas si vous avez fait quelques personnalisations pour les champs de saisie. Le suivant sera de travailler avec entrées et de sélectionner des éléments et une seule ligne de code.
J'ai plutôt de manière indirecte. Vos données doit avoir un id unique.
D'abord, la fixation d'un module de formatage
Utiliser ce formateur dans ColModel. Pour récupérer l'ID (par exemple, la ligne sélectionnée)
(ou vous pouvez utiliser directement .data() pour la dernière version de jquery 1.4.4)
Afin d'obtenir la valeur de la cellule lorsque dans l'édition en ligne vous avez besoin pour capturer cet événement(ou un autre événement similaire, vérifiez la documentation):
beforeSaveCell: function (rowid, celname, la valeur, la iRow, iCol) { }
Dans la valeur de paramètre que vous avez de la "valeur" de la cellule qui a été en cours d'édition.
Pour obtenir le reste des valeurs dans la ligne d'en utiliser getRowData()
J'ai perdu beaucoup de temps avec cela, espérons que cette aide.
Ma solution est de fixer un objet contenant original de valeurs pour chaque élément tr dans la grille. J'ai utilisé afterAddRecord rappel pour obtenir mes mains sur les valeurs avant de les jqGrid les jette loin et jQuery "données" de la méthode pour les stocker dans le travail.
Exemple:
“rowelem” est le tableau de valeurs de cellule de notre JSON flux de données ou [jsonReader] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#jsonreader_as_function)
À tout moment, je peux extraire ces attributs à l'aide de:
Plus: http://wojciech.oxos.pl/post/9423083837/fetching-original-record-values-in-jqgrid
Je pense qu'Aidan réponse est de loin le meilleur.
Cela engage tout courant des modifications, vous donnant accès à la valeur réelle. Je la préfère parce que:
Avant je recevais :
html tag de la zone de texte quelque chose comme
mais Ici, c'est la solution pour obtenir la valeur de cette colonne particulière, de travail et testé
- Je obtenir modifier la valeur à l'aide de javascript:
document.getElementById ("idCell').valeur
J'espère que cette info utile pour quelqu'un.
essayer de s'abonner à afterEditCell cas, il va recevoir (rowid, cellname, la valeur, la iRow, iCol), où la valeur est de votre une nouvelle valeur de votre cellule
Vous pouvez utiliser getCol pour obtenir les valeurs de colonne dans un tableau l'indice, puis par la ligne qui vous intéresse.