J'ai des problèmes d'obtention de cellules (avec celledidit: true) pour être non modifiable même si la colonne est définie sur modifiable.
J'ai essayé de nombreuses manières, comme devantréditcell, des formateurs, etc. Aucune ne semble fonctionner. P>
Le plus proche que j'ai eu est de définir un formateur à la colonne que j'aimerais être éditable, puis en utilisant SetCell pour définir la classe "Cellule non modifiable" (extrait ci-dessus). La première fois que vous cliquez sur la cellule, elle passe malheureusement en mode édition, mais si vous cliquez sur ailleurs et que vous essayez de ré-éditer la cellule, elle est réussie sur un éditoir. P>
J'ai aussi essayé d'utiliser le même coupé mais À l'intérieur de devantreditCell, il arrête avec succès la cellule d'être éditée mais à son tour 'gèle' la grille. Vous ne pouvez plus choisir une autre cellule. P>
function noEditFormatter(cellValue, options, rowObject) {
if (cellValue == 'test')
jQuery("#grid").jqGrid('setCell', options.rowId, 'ColName', '', 'not-editable-cell');
return cellValue;
}
3 Réponses :
L'idée d'utiliser SetCell Method pour ajouter une cellule non modifiable de classe ' 'Aux cellules qui devraient être non modifiables, c'est correct. Vous choisissez uniquement le mauvais endroit pour le faire. À l'intérieur du formateur personnalisé, la grille ne peut pas être construite jusqu'à la fin. Je vous recommande d'utiliser loadcommete ou GridComplete Pour examiner la grille contenir de la page actuelle em> et marquez certaines cellules comme non modifiables. P >
J'ai préparé un exemple qui le démontre. Comme dans votre exemple, toutes les cellules ayant un "test" sont marquées comme non modifiables. Dans la façon dont vous pouvez examiner une cellule et marquer une autre cellule comme non modifiable. P>
@Oleg: Je veux la complète JQgrid tout en se chargeant avec peu de cellules en mode modifiable dans chaque rangée. Est-ce possible. Je ne trouve rien à travers la recherche. S'il vous plaît aider
@Saikrishna: Désolé, mais je ne comprends pas ce que tu veux dire. Pourriez-vous expliquer tous les plus détaillés?
@Oleg: C'est comme si j'avais 5 lignes provenant de la base de données, et tout dans chaque rangée que j'ai field1 est une boîte de sélection avec des déposées, le champ 2 est également une zone de sélection, le champ 3 et le champ 4 sont des zones de texte respectivement. Maintenant, lorsque JQGRID charge. Je veux par défaut toutes ces lignes en mode modifiable I.e. field1, field2, field3 et field4
@Saikrishna: Vous voulez probablement dire "mode d'édition" au lieu d'un "mode modifiable". Voulez-vous que toutes les lignes chargées sont modifiées de sorte que l'utilisateur puisse modifier les valeurs et appuyer sur "Entrée" pour enregistrer la ligne modifiée? Ce n'est pas le problème décrit dans la réponse à laquelle vous avez écrit des commentaires. Néanmoins, vous pouvez le faire en appelant editrow code> pour toutes les lignes de la grille à l'intérieur de loadComplete code>.
C'est ça, je l'ai eu. Je vous remercie
ENFIN!! passé 4 heures à essayer de comprendre cela! Merci oleg
J'aimerais noter la ligne de code importante ici: Grid.jqgrid ('SetCell', ID, 'Nom', '', '', 'Cellule non modifiable'); Code>
{name: 'name',index: 'name', editable: true, width: 100, sortable: false, align: 'center', cellattr: cellattr}
J'ai dû résoudre ce problème maintenant (2015) et trouvé Une approche qui a l'air propre : spécifier une fonction pour Cellbeginedit code> qui renvoie false code> si la cellule n'est pas autorisée à être modifiée. Tiré de l'article lié et modifié:
Cet exemple utilise JQxGrid. L'OP utilise JQGrid.