Kendo-l'INTERFACE utilisateur de la grille de la Valeur Définie dans la grille avec Javascript
Je me demande comment vous allez sur la modification de la valeur d'une ligne dans une grille en JavaScript alors qu'il est marqué comme "sale" dans la grille et la source de données sous-jacente.
par exemple j'ai une liste de Contact/Client. Ils ont 3 champs Prénom/Nom/IsPrimaryContact. Il ne peut y avoir 1 contact principal, de sorte que lorsque le premier contact est définie sur true, un record, j'ai un code JavaScript qui parcourt la source de données et définit d'autres contacts définir comme principale à false.
Le JavaScript de tous les feux de l'amende et les champs de données sont correctement réglé, mais il y a deux problèmes:
1. La grille n'est pas mis à jour avec les modifications que je fais sous le capot de la source de données
2. La modification du dossier ne sont pas marqués comme "sale", et donc pas synchronisés en arrière quand j'appelle une source de données.sync()
Je peux résoudre le deuxième problème en réglant manuellement le champ sale sur le dossier, mais cela ne semble pas juste. Il se sent comme je doit être mise à jour le champ au niveau de grille, pour qu'il prenne soin de lui à la fois l'INTERFACE utilisateur et la source de données.
Des idées comment aller à ce sujet?
Grâce
Vous devez vous connecter pour publier un commentaire.
Fondamentalement, lorsque vous voulez mettre à jour un enregistrement, vous devez utiliser le ensemble méthode du modèle. Par exemple pour mettre à jour le premier enregistrement de la source de données, vous devez mettre à jour comme ceci:
Ci-dessus devrait marquer automatiquement le drapeau comme sale et il devra en aviser la Grille qu'il y a des changements, de sorte que la Grille sera automatiquement actualiser.
Aussi, si vous voulez récupérer l'objet d'une ligne spécifique directement, vous pouvez utiliser les dataItem méthode de la Grille.
firstItem.set('value','true');
ne fonctionne pas.Je le fais dans un moyen très simple et efficace:
C'est une vieille question, mais espère que ça peut aider quelqu'un avec le même problème.
Suivantes Pechka réponse ci-dessus, j'ai ajouté un peu de code supplémentaire pour marquer la cellule modifiée avec drapeau sale.
Voici mon rasoir code nécessaire sur la colonne pour que cela fonctionne, j'ai ajouté un nom de classe de sorte qu'il peut être utilisé dans le sélecteur jquery plus tard.
Voici mon code Jquery pour mettre à jour la cellule et la marque de la cellule modifiée après le succès de la récupération de données à partir du serveur de côté.
Ci-dessous est la ligne de code qui est responsable de l'indicateur de changement en évidence.
Je l'utilise de cette façon - au moins avec des cases à cocher. Je vais mettre la colonne avec le bouton Modifier pour ressembler à ceci:
Et avoir accès à l'endroit en cliquant sur la première colonne (j'ai une image avec un lien hypertexte) utilise une fonction onclick par programme, cliquez sur le bouton Modifier, cliquez sur la case à cocher, puis cliquez sur le bouton mettre à Jour. Probablement plus "old school", mais j'aime bien savoir c'est suivant l'ordre que je ferais si je ont été mise à jour, moi-même.
Je passe dans l'objet ("ce"), afin que je puisse passer la ligne et de la case à cocher lorsqu'il apparaît, le nouveau statut de 0 ou de 1 (j'ai un code qui l'utilise, pas vraiment nécessaire pour cette démo, si, si je pars de cette partie de ma fonction pour des raisons de simplicité), et l'ID de l'élément:
Code ci-dessus suppose, bien sûr, la case à cocher est dans la première colonne. Sinon, ajuster la première
childNodes[0]
sur que chkbox setAttribute ligne de la colonne, il est assis dans, moins un, car il commence à compter à partir de zéro.Pour moi fonctionne (Pas besoin d'instancier la grille):
set("fieldname",value)
s'actualise automatiquement la grille, il y a une façon simple de juste de mettre à jour l'INTERFACE utilisateur de la valeur et de la valeur du champ sans besoin de rafraîchissement. il suffit de faire, par exemple:Espère que cette aide