5

最後の列をグリッドの右側に固定することはできますか?

私が遭遇したすべてのデモは、1 列目または 1 列目と 2 列目がグリッドの左側にフリーズしていることを示しています。

frozen:truecolModel の最後の列のみにプロパティを使用しようとしましたが、機能しません。

4

2 に答える 2

3

jqGrid の固定された列の現在の実装では、最後の列をグリッドの右側に固定することはできません。したがって、jqGrid で要件を実装する簡単な方法がわかりません。

複雑さの理由は、jqGrid での凍結された列の実装にあります。このメソッドは、最初は左から (配列の最初のインデックスから)setFrozenColumns調べます (ソース コードの一部を参照)。プロパティを持つ最大インデックスを見つけ、別の div にグリッドの列のコピーを作成します。言い換えれば、jqGridはプロパティを持つ最初の列のみを考慮します。持っている他のすべてのプロパティは無視されます。次に、jqGrid は常に左の固定された列のみを持つ div を作成しますcolModel colModelcolModelfrozen: truecolModelfrozen: truefrozen: true. そのため、グリッドの右側にある固定された列の使用は提供されていません。

于 2014-12-26T11:21:00.590 に答える
1

jqGrid では、右側の列または隣接していない列をフリーズすることは不可能であるため、すべてのデモで左側の列のみがフリーズされていることがわかります (列 1 と 3 をフリーズしてみてください。同様に、列 1、2、および 4 を凍結し、3 列を凍結しない場合、列 1 および 2 のみが凍結されます)。

そのようなルールを課す jqGrid のコード スニペットの下 (コメント付きの while ループを参照from left, no breaking frozen)。右側の列を固定することを真剣に考えている場合は、必要に応じて jqGrid コードを変更してみてください。

setFrozenColumns : function () {
        return this.each(function() {
            if ( !this.grid ) {return;}
            var $t = this, cm = $t.p.colModel,i=0, len = cm.length, maxfrozen = -1, frozen= false;
            // TODO treeGrid and grouping  Support
            if($t.p.subGrid === true || $t.p.treeGrid === true || $t.p.cellEdit === true || $t.p.sortable || $t.p.scroll )
            {
                return;
            }
            if($t.p.rownumbers) { i++; }
            if($t.p.multiselect) { i++; }

            // get the max index of frozen col
            while(i<len)
            {
                // from left, no breaking frozen
                if(cm[i].frozen === true)
                {
                    frozen = true;
                    maxfrozen = i;
                } else {
                    break;
                }
                i++;
            }
于 2014-12-25T06:29:58.813 に答える