7

問題:サブグリッドを持つjqGrid。メイングリッドの一部の行の展開/折りたたみ機能を無効にしたい。

4

4 に答える 4

6

私は実際に方法を見つけました:

grid.jqGrid('setGridParam',{
                afterInsertRow: function(rowid, aData, rowelem) {

                    var rowData = grid.getRowData(rowid);
                    if(**Condition**){
                        $('tr#'+rowid, grid)
                         .children("td.sgcollapsed")
                         .html("")
                         .removeClass('ui-sgcollapsed sgcollapsed');
                    }
                }
            });

少し問題がありました。コード @Frank はアイコンを削除しましたが、「クリック」イベントは引き続きトリガーされました。「クリック」イベントのバインドを解除しようとしても機能しないようです。これはおそらく後で (おそらくgridCompleteに) 接続されているためです。とにかく、「ui-sgcollapsed sgcollapsed」クラスの 1 つを使用してクリック イベントが関連付けられていると考えたので、それらを削除すると、イベントは関連付けられません。

それが役に立てば幸い。

于 2011-09-15T09:31:06.170 に答える
3

これを gridConfig に追加します

afterInsertRow: function(rowid, aData, rowelem) {
    // Remove the subgrid plus button except for rows that have exceptions
    if (CONDITION) {
        $('#' + rowid).children("td.sgcollapsed").unbind().html("");
    }
},
于 2010-06-22T19:34:00.847 に答える
1

サブグリッドの展開および折りたたみボタンを無効化または非表示にしようとしている場合は、loadcomplete でこれを使用します。

jQuery("#GridTeableID").jqGrid('hideCol', "subgrid");
于 2013-11-19T05:20:07.470 に答える
0

残念ながら、このための jqGrid API はありません。グリッドが作成されるまで待つloadComplete必要があります。その後、おそらくイベントから、すべての行を手動でループし、選択した行を無効にする必要があります。

グリッドを構成する DOM 要素を調べると、選択した行のエキスパンダーを削除/無効にする方法をおそらく見つけることができます。おそらくjQuery.removeを使用して。

于 2010-05-27T21:23:36.323 に答える