The old answer beschreibt, wie man das Verhalten implementieren kann, das Sie benötigen.
Zunächst ist es wichtig, dass Sie die IDs aller Schaltflächen der Navigationsleiste kennen, die Sie deaktivieren müssen. Die Regeln des ID-Aufbaus können ein wenig anders sein, abhängig von der Version von jqGrid, die Sie verwenden (können) und von der Verzweigung von jqGrid (free jqGrid, kommerzielle Guriddo jqGrid JS oder ein altes jqGrid in Version < = 4.7). Ich entwickle free jqGrid, die ich Ihnen empfehlen würde, es zu benutzen, wenn Sie keine speziellen Beschränkungen haben. Die IDs sind für obere und untere Pager unterschiedlich (siehe pager
und toppager
Optionen von jqGrid). Sie können einfach mit den Entwicklertools die IDs der Schaltflächen überprüfen, die Sie deaktivieren müssen.
Es ist wichtig zu verstehen, dass Sie den Status (Deaktivieren/Aktivieren) der Navigatorschaltflächen nach jeder Auswahl/Abwahl der Zeilen aktualisieren müssen. Daher sollten Sie beforeSelectRow
Rückruf oder jqGridBeforeSelectRow
Ereignis verwenden. Um die Schaltfläche im Falle der Verwendung von jQuery UI CSS zu deaktivieren, sollten Sie den Schaltflächen CSS-Klassen ui-state-disabled
und ui-jqgrid-disablePointerEvents
hinzufügen. Um sie zu aktivieren, sollten Sie die Klassen entfernen. Wenn Sie anstelle von jQuery UI CSS Bootstrap CSS verwenden, sollten Sie "disabled ui-jqgrid-disablePointerEvents"
statt "ui-state-disabled ui-jqgrid-disablePointerEvents"
verwenden. Die Klasse ui-jqgrid-disablePointerEvents
ist in ui.jqgrid.css
(ui.jqgrid.min.css
) von freiem jqGrid definiert. Wenn Sie nicht frei jqGrid verwenden, dann sollten Sie es auf folgende Weise definieren:
.ui-jqgrid-disablePointerEvents {
pointer-events: none;
}
(the lines des Codes von ui.jqgrid.css
sehen). Die Verwendung von pointer-events: none
ist wichtig, wenn Sie hauptsächlich alle Webbrowser (siehe here) auf verschiedenen Geräten unterstützen möchten.
Vielen Dank für die Antwort, hier bin ich mit Blick nur für die Schaltflächen zum Hinzufügen, Bearbeiten und Löschen (die Standard-Bearbeitungsschaltflächen von jqGrid). Wenn Sie {refresh: true, edit: false, add: false, del: false, search: true} an navGrid übergeben, werden die drei Schaltflächen unsichtbar/verborgen. Hier möchte ich, dass sie im deaktivierten Modus sichtbar sind. – santoshM
@santoshM: Gern geschehen! Bitte lesen Sie meine Antwort sorgfältig. Es ist wichtig zu wissen, welche Version von jqGrid Sie verwenden und von welchem fork von jqGrid. Welchen Pager verwendest du ('toppager' oder' pager' oder beides)? Haben Sie [die Demo] (http://www.ok-soft-gmbh.com/jqGrid/EdableDisableEditDelNavigatorButtons.htm) aus [der alten Antwort] (https://stackoverflow.com/a/5376355/315935) versucht, auf welches ich verwiesen habe? Die Schaltfläche "Hinzufügen" sollte immer aktiviert sein, aber Bearbeiten und Löschen sollte nur aktiviert werden, wenn eine Zeile ausgewählt ist und die Zeile bearbeitet werden kann. – Oleg
Wenn ich passiere, wenn ich {refresh: true, edit: false, add: false, del: false, search: true} an navGrid übergebe, sollten die Schaltflächen deaktiviert und nicht ausgeblendet sein. – santoshM