2013-02-21 71 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; 
}