2011-01-04 8 views
4

In unserer Anwendung verwenden wir ein jqGrid, das das Ausblenden und Neuordnen von Spalten unterstützt. Wenn die Spalten ausgeblendet oder neu geordnet sind, möchten wir die neuen Einstellungen in unserer Datenbank speichern. Aber dazu müssen wir irgendwie das Ausblend- oder Neuordnungs-Ereignis erfassen. Oder möglicherweise zu erfassen, wenn das ColModel ändert.Wie erfassen Sie jqGrid-Spalten, die Ereignisse ändern?

Gibt es eine Möglichkeit, diese Ereignisse zu erfassen und zu behandeln?

Danke.

Antwort

4

Sie können 'done' Ereignis der columnChooser verwenden. Hier ein Beispiel:

var grid = $("list"); 
grid.navButtonAdd(
    '#pager', 
    {caption:"", buttonicon:"ui-icon-calculator", title:"Column choose", 
    onClickButton: function() { 
     grid.jqGrid('columnChooser', 
        { 
         "done": function(perm) { 
          if (perm) { 
           this.jqGrid("remapColumns", perm, true); 
          } 
          // here you can do some additional actions 
         } 
        }); 
    } 
}); 

AKTUALISIERT: Wenn Sie sortable Option als

sortable: { 
    update: function (permutation) { 
     alert("sortable.update"); 
    } 
} 

definieren und nicht als sortable:true Sie die Benachrichtigung über die neue Reihenfolge der Spalten erhalten. Einzelheiten finden Sie unter the source code von jqGrid. Das Array permutation mit Ganzzahlen hat die gleiche Bedeutung wie in remapColumns Funktionen (siehe meine old answer für Details).

+0

Danke für den Tipp, aber wir verwenden nicht columnChooser, sondern eine Kombination von setColumns zum Ausblenden und Sortierung (Spaltenumordnung) zum Sortieren. Ihr Tipp hat mir geholfen, das passende Ereignis für setColumns zu finden, das afterSubmitForm heißt. Aber für die Spaltenumordnung kann ich nichts im Wiki finden. – jgosar

+0

@jgosar: Willkommen! Um das Vertrauen zu erklären, verstehe ich nicht wirklich, wie Sie das Verstecken und Neuordnen von Spalten implementieren. Moreother 'columnChooser' macht genau das, was du beschreibst und auf eine sehr komfortable Art und Weise inklusive Drag & Drop-Unterstützung und so weiter. Wahrscheinlich könnte das Hinzufügen des Codes zu Ihrer Frage alles erklären. Suchen Sie nach "remapColumns" für die Suche nach Spalten (siehe http://stackoverflow.com/questions/3665692/change-the-sequence-of-jqgrid-columns/3666225#3666225). Examin des Quellcodes von columnChooser https://github.com/tonytomov/jqGrid/blob/master/js/grid.jqueryui.js#L110 könnte Ihnen wahrscheinlich helfen. – Oleg

+0

@jgosar: Um 'columnChooser' live zu sehen, können Sie die jqGrid Demoseite http://trirand.com/blog/jqgrid/jqgrid.html öffnen, wählen Sie links auf der Seite" Neu in Version 3.6 "und dann" Spaltenauswahl ". In der Navigationsleiste können Sie auf die Schaltfläche "Spalten" klicken und damit spielen. Sie können Drag & Drop für die Neuanordnung von Spalten verwenden. – Oleg

1

Sie können Spaltenänderungen über den sortierbaren Parameter erfassen, wie oben in Olegs "Aktualisierung" erwähnt, oder wie unter jqGrid's message board beschrieben.

Beachten Sie jedoch, dass das an Ihren Rückruf übergebene Array relativ zur aktuellen Spaltenreihenfolge ist. Mit anderen Worten, das Speichern des Arrays nach dem Verschieben mehrerer Spalten führt nicht zu den gewünschten Ergebnissen. Siehe meine Antwort zu diesem other stackoverflow question.

Verwandte Themen