2013-02-21 70 views
0

當我有一個使用ListView控件呈現的寬表(多列)一個C#asp.net應用程序。需要凍結的列使用的jqGrid tableToGrid功能

爲了使這個問題有點更通用的列表視圖只是呈現一個HTML表格,並附帶問題。

我想使用的jqGrid的「tableToGrid」功能以凍結頭和處理垂直和水平滾動,並且優選凍結產生的HTML表格的第一列中。凍結的標題和滾動正在工作,但經過大量研究後,我似乎無法「拼湊在一起」來凍結列。

我不想爲表中的所有列顯式創建colNames和colModel,除非必要,因爲這是由tableToGrid函數處理的,所以我使用了更改凍結列的示例,並提出了此javascript:

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

當我試圖在上面,我得到的消息微軟JScript運行時錯誤:「未定義」爲空或不是對象
我也試過沒有鏈接的代碼凍結列,如
$( '#parcelTable')JQ( 'destroyFrozenColumns')。
$( '#parcelTable')(jqGrid的( 「setColProp」, 「rowEdit」,{冷凍:真正}。)等
並得到了相同的消息

我無疑做了一些愚蠢的語法或用法錯誤,但我不知道在哪裏可以從這裏走,和真的不知道這是最好的辦法 任何幫助表示讚賞 - 感謝

回答

0

凍結您可以使用頭:!

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

這可以在j的loadComplete()來執行qgrid

對於列的凍結,你可以在類只需添加到列定義

classes:'jqgridbodyLock' 

例如:

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

同時添加以下CSS定義您publical 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; 
}