2011-01-04 23 views
4

私たちのアプリケーションでは、列の非表示と並べ替えをサポートするjqGridを使用しています。列が非表示になったり並べ替えられたりすると、新しい設定がデータベースに保存されます。しかし、これを行うには、何らかの形で隠れイベントや並べ替えイベントをキャプチャする必要があります。 colModelが変更されたときにキャプチャすることもできます。jqGrid列変更イベントをキャプチャする方法は?

これらのイベントをキャプチャして処理する方法はありますか?

ありがとうございました。

答えて

4

columnChooserの「完了」イベントを使用できます。

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 
         } 
        }); 
    } 
}); 

UPDATED:ここでは例があるあなたは、列の新しい秩序に関する通知を受け取りますsortable:trueとして

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

としてではなく、sortableオプションを定義する場合。詳細については、jqGridのthe source codeを参照してください。整数の配列permutationは、remapColumns関数と同じ意味です(詳細は、old answerを参照してください)。

+0

ヒントはありがたいですが、columnChooserを使用していませんが、並べ替えのための隠しと並べ替え(列並べ替え)のためのsetColumnsの組み合わせです。あなたのヒントは、afterSubmitFormというsetColumnsの適切なイベントを見つけるのを助けました。しかし、列の並べ替えのために私はwikiで何も見つけることができません。 – jgosar

+0

@jgosar:ようこそ!信頼を告げるために、列の非表示と並べ替えをどのように実装するのかは分かりません。 Moreother 'columnChooser'はあなたが何を記述し、非常に快適な方法で包括的ドラッグアンドドロップサポートなどを行うのです。あなたの質問にコードを追加するとおそらくすべてを説明できます。 'reapColumns'の列リアーリング検索(http://stackoverflow.com/questions/3665692/change-the-sequence-of-jqgrid-columns/3666225#3666225を参照)。 columnChooser https://github.com/tonytomov/jqGrid/blob/master/js/grid.jqueryui.js#L110のソースコードを調べるとおそらく助けになるかもしれません。 – Oleg

+0

@jgosar: 'columnChooser'ライブを見るには、jqGridデモページhttp://trirand.com/blog/jqgrid/jqgrid.htmlを開き、ページの左側にある「バージョン3.6の新機能」を選択し、列セレクタ "を選択します。ナビゲーションバーで[列]ボタンをクリックして再生することができます。 colomn reorderingのためにドラッグアンドドロップを使用することができます。 – Oleg

1

上記のOlegの「更新」で、またはjqGrid's message boardで議論されているように、並べ替え可能なパラメータを使用して列の変更を取得できます。

ただし、コールバックに渡される配列は、現在の列の順序に相対的であることに注意してください。つまり、複数の列を移動した後に配列を保存しても、目的の結果は得られません。このother stackoverflow questionの私の答えを見てください。

関連する問題