ExtJS 4.x: Comment désactiver le “sale record” coin rouge Ext.de la grille.Panneau de cellules?
J'ai un Poste.de la grille.Panneau (aka gridpanel) avec un magasin, utilisée uniquement pour le côté client d'effets visuels (c'est à dire, rien n'est enregistré sur le serveur). Lorsque je créer un nouveau modèle d'instances et de les ajouter à la boutique, ils sont indiqués dans la grille avec un coin rouge (sans doute en indiquant que stocker des changements n'ont pas été enregistrées).
Pour le moment, je vais appeler la .méthode commit() sur chaque enregistrement/modèle avant, il est ajouté à la boutique pour empêcher l'enregistrement sale coin rouge dans la grille.
Est-il un générique façon de simplement configurer un panneau grille pour ne pas afficher visuelle des indicateurs relatifs à la "sale" statut d'un enregistrement?
Remarque: Les solutions en cette question similaire impliquer CSS ou ne fonctionnent que pour ExtJS 3. Je suis l'espoir de trouver un programmatiques "paramètre" qui fonctionne pour ExtJS 4.
- Vous voulez une solution qui n'implique pas de CSS (la norme de la solution). Est-ce parce que vous voulez que l'utilisateur soit capable de définir si le sale triangle est indiqué? Ce qui sur une méthode qui ajuste le CSS par programmation à partir de l'interaction de l'utilisateur? ExtJS a des méthodes pour le faire, mais cela impliquerait CSS.
- Merci. J'ai fait une rapide plongée dans le ExtJS source et a confirmé qu'il n'y a pas moyen via un programme de "configuration" de la grille pour ne pas afficher le rouge à coins. Vous avez raison--CSS (dans une certaine forme) est la seule façon de le faire sans se soucier de commettre des modèles, la synchronisation des magasins, etc.
Vous devez vous connecter pour publier un commentaire.
Son travail à nouveau dans ExtJS 4.1.1.
Utiliser le markDirty configurationProperty dans le contrôle gridview.
Lorsque vous avez un GridPanel, l'utiliser comme ceci:
http://docs.sencha.com/ext-js/4-1/#!/api/Ext.de la grille.Vue-cfg-markDirty
markDirty
laquelle vous pouvez définir la valeur false.Sur la base des réponses ici et sur le Sencha forums, et après avoir regardé la ExtJS source, la réponse est en gros:
Non, il n'y a pas un moyen simple (au moins dans 4.0.7) pour configurer une grille de ne pas montrer le rouge à coins, sans l'aide de CSS.
Merci pour tout le remue-méninges et plus d'infos de tout le monde. Je lance ce jusqu'donc quelqu'un qui vient dans le présent, dans l'avenir, peut voir clairement la réponse à ma question.
Une option serait d'éviter d'utiliser un proxy distant, et au lieu d'utiliser une mémoire proxy avec la synchronisation automatique: true, puis de charger les données manuellement avec une Ext.Ajax.demande d'appel.
La distance procurations sont assez codé en dur pour garder une trace de savoir si des modifications ont été enregistrés sur le serveur ou pas.
Si vous souhaitez garder une trace de savoir si ils sont enregistrés sur le serveur ou pas, mais il suffit de supprimer l'indication visuelle avec les coins, utiliser les CSS pour changer ce "sale" lignes ressembler. Si vous souhaitez supprimer complètement de suivi, de ne pas utiliser un proxy distant.
J'ai un formulaire avec une case à cocher qui représente juste transitoire de données. La vérification de la boîte de marque de la colonne sale qui n'a pas de sens à ma cellule. Les autres colonnes probablement besoin de la sale de marques si elles n'étaient pas dans la synchro. Ma solution qui est inspirée par @Romain de réponse, mais avec plus de contrôle sur les colonnes obtenir le traitement.
Dans la colonne config:
Dans mon CSS
Ça marche!!! Mais c'est sale comme pour moi. Juste pour solution rapide.
J'en ai un similaire de l'installation, avec un magasin qui est soutenu par une
localStorage
proxy. Quand je reçois un enregistrement sale dans une grille à l'aide de ce magasin, j'utilisecommitChanges()
(ici à partir de ExtJS 4.2.1) afin de synchroniser le magasin avec la grille et ainsi enlever le "sale" marqueur.En fait, il y a une autre façon de par programmation à résoudre (un non-CSS hack) vérifié dans ExtJS 4.2
ou, plus précisément,
record.commit()
immédiatement après la modification d'un enregistrement. MaismarkDirty
est le meilleur moyen.Bien, j'ai la solution pour l'enregistrement sale,
étapes à faire:
ensemble modifiée de la propriété de casier pour objet vide;
par exemple enregistrement.modifié = {};
Cela devrait être fait avant l'appel de la loadRecords() de la poste, peut-être dans le modèle ou le magasin (vous pouvez surcharge onProxyLoad() la méthode de Ext.les données.Magasin
)
correctifs:
Essayer à l'écriture d'écoute sur le magasin à partir de l'exemple dans la réponse à cette question: EXT JS du Magasin Proxy: les lecteurs et les écrivains