我有一个c#asp.net应用程序,它使用Listview控件来呈现一个宽表(很多列)。
为了使这个问题更加通用,Listview只是呈现一个HTML表,并且是该问题的偶然问题。
我想使用jqGrid的“tableToGrid”函数来冻结标题并处理垂直和水平滚动,最好冻结生成的HTML表的第1列。冷冻标题和滚动工作正在进行,但经过大量研究后,我似乎无法“将各个部分放在一起”来冻结列。
除非必要,否则我不想为表中的所有列显示创建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');
当我尝试上述操作时,收到消息 Microsoft JScript运行时错误:'undefined'为null或不是对象
我也尝试不链接冻结列的代码,如中
$( '#parcelTable')JQ( 'destroyFrozenColumns');
$('#parcelTable')。(jqGrid(“setColProp”,“rowEdit”,{frozen:true})等等
得到了同样的信息。
我毫无疑问地做了一些愚蠢的语法或用法错误,但我不知道从哪里开始,并且不知道这是否是最好的方法。 任何帮助表示赞赏 - 谢谢!
答案 0 :(得分:0)
要冻结标题,您可以使用:
$("#gridId").setLabel("Column Index",'Label',"jqgridheaderLocked");
这可以在jqgrid
的loadComplete()
中执行
对于冻结列,您只需将该类添加到列定义
即可 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;
}