0

Listview コントロールを使用して幅の広いテーブル (多くの列) をレンダリングする ac# asp.net アプリケーションがあります。

この問題をもう少し一般的にするために、Listview は単に HTML テーブルをレンダリングするだけで、問題に付随しています。

jqGrid の "tableToGrid" 関数を使用してヘッダーを固定し、垂直および水平スクロールを処理し、できれば結果の HTML テーブルの 1 列目を固定したいと考えています。凍結されたヘッダーとスクロールは機能していますが、かなりの調査の結果、列を凍結するために「ピースをまとめる」ことができないようです。

これは tableToGrid 関数によって処理されるため、必要でない限り、テーブル内のすべての列に対して colNames と colModel を明示的に作成する必要はありません。そのため、凍結された列を変更する例を使用して、次の JavaScript を作成しました。

tableToGrid($('#parcelTable'),
{
 sortable: false,
 multiselect: false,
 shrinkToFit: false,
 width: 952,
 height: 300
})
.jqGrid('destroyFrozenColumns')
.jqGrid("setColProp", "rowEdit", { frozen: true })
.jqGrid("setFrozenColumns")
.trigger('reloadGrid');   

上記を試したところ、Microsoft JScript ランタイム エラー: 'undefined' is null or not an object
というメッセージが表示 されまし
た');
$('#parcelTable').(jqGrid("setColProp", "rowEdit", { frozen: true }) など
で、同じメッセージが表示されました。

私は間違いなくいくつかのばかげた構文または使用法エラーを犯しましたが、ここからどこに行くべきかわかりませんし、これが最善のアプローチであるかどうかもわかりません。どんな助けでも感謝します--ありがとう!

4

1 に答える 1

0

ヘッダーを凍結するには、次を使用できます。

 $("#gridId").setLabel("Column Index",'Label',"jqgridheaderLocked");

これloadComplete()は jqgridで実行できます

列を凍結するには、クラスを列定義に追加するだけです

  classes:'jqgridbodyLock' 

例えば ​​:

 {name:"Col1",index:"Col1",width:80,eight:50,sortable:false,classes:'jqgridbodyLock'},

また、次の css 定義を公開 css ファイルに追加します。

.jqgridbodyLock{
    position:relative; 
    left: expression(parentNode.parentNode.parentNode.parentNode.parentNode.scrollLeft);
    z-index: 10;
}

.jqgridheaderLocked{
    position:relative;
    left: expression(parentNode.parentNode.parentNode.parentNode.parentNode.scrollLeft); /* IE5+ only */
    z-index:30;
}
于 2013-02-25T04:04:29.580 に答える