2017-08-22 4 views
2

Jqgrid erstellt standardmäßig Schaltflächen zum Hinzufügen, Bearbeiten und Löschen, die bei Verwendung der entsprechenden Eigenschaften mit dem Wert false ausgeblendet sind. (Beispiel: {add: false, edit: false, del: false} im Nav-Grid oder andersherum).Schaltflächen von jqgrid deaktivieren, nicht ausblenden (Standardverhalten)

Hier möchte ich diese Tasten deaktivieren, anstatt zu verstecken. Kann mir jemand helfen? Ich will damit sagen, dass ich die Standardfunktionalität von Verbergen zu deaktivieren ändern möchte.

Vielen Dank im Voraus.

Antwort

1

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.

+0

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

+0

@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

+0

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

0

Wenn Sie {add: false, del: false} mit navButtonAdd() übergeben, werden die Schaltflächen zum Hinzufügen und Löschen überhaupt nicht zum Raster hinzugefügt. Um sie zuerst zu deaktivieren, müssen wir sie hinzufügen, indem wir keinen falschen Wert an add und del übergeben. Nach dem Hinzufügen können wir sie deaktivieren, indem wir die Klasse 'ui-state-disabled' hinzufügen.

1
  • Wenn Sie es aber im deaktivierten Zustand zeigen möchten, dann sollten Sie verwenden.
$("#edit_pays_grid").addClass('ui-state-disabled'); 

Fiddle Demo link

  • Alternativ können Sie auch unter Code benutzen, die nicht an allen Taste in Raster hinzuzufügen.

.navGrid ('# pays_grid_pager', {edit: false, hinzufügen: false, del: false, Suche: false, refresh: true})

Fiddle Demo link

Verwandte Themen