2

内容に応じてグリッドの列を調整する方法を見つけようとしています。これは、特定の列の場合のみです。これまでに行ったことは、行をループしてコンテンツの長さを比較することにより、colModel を調整することです。

コンテンツが以前の既知の長さを超える場合、colModel が再度調整されます。こんな感じです。

        // Get rowId's and get find the longest content
        $.each(grid.jqGrid('getDataIDs'), function(row, rowid) {
            // Loop through the specified columns
            $.each(abo_fields, function(colid, column) {
                var abo = grid.jqGrid('getCell', rowid, column);
                var new_width = abo.length * 8;
                var current = grid.jqGrid('getColProp', column);
                if(current['width'] < new_width) {
                    grid.jqGrid('setColProp', column, {width:new_width});
                }                    
            });
        });

getColProp を要求すると、colModel が調整されます。grid.trigger('reloadGrid'); を使用すると 列は、元の colModel で指定されたものと同じままのようです。jquery で CSS の調整も試みましたが、うまくいきませんでした。

どんな助けでも大歓迎です。

4

2 に答える 2

0

そこで、colModelオプションをさらに掘り下げて、次のことを見つけました。

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:colmodel_options

以下は、グリッドの構築時に動的に変更できないオプションです(変更した場合、効果がないか、グリッドエラーが発生します)。これらのオプションの一部には、値を変更するために使用できるメソッドがあります。

name
width
resizable
label (method avail.)

jqGrid wikiには、本当にこれが必要な場合は、次のように書かれています。これが行われると、グリッドに組み込まれているロジックがなくなることを覚えておいてください。

現在の設定でグリッドをリロードします。これは、データ型がxmlまたはjsonの場合、新しいリクエストがサーバーに送信されることを意味します。この方法は、すでに構築されているグリッドに適用する必要があります。このメソッドはHEADER情報を変更しないことに注意してください。つまり、colModelへの変更は影響を受けません。gridUnloadを使用して、異なるcolModelで新しい構成を再ロードする必要があります。loadonceの場合にのみ機能します:false !!!

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods

これが他の誰かにも役立つことを願っています:)

于 2012-12-28T13:09:49.673 に答える