【问题标题】:Need to freeze a column when using jqGrid tableToGrid function使用jqGrid tableToGrid函数时需要冻结一列
【发布时间】:2013-02-21 06:05:58
【问题描述】:

我有一个 c# asp.net 应用程序,它使用 Listview 控件来呈现一个宽表(许多列)。

为了使这个问题更通用一点,Listview 只是呈现一个 HTML 表格,并且是附带问题的。

我想使用 jqGrid 的“tableToGrid”函数来冻结标题并处理垂直和水平滚动,最好冻结生成的 HTML 表的第一列。冻结的标题和滚动正在工作,但经过大量研究,我似乎无法“将各个部分放在一起”来冻结列。

除非必要,否则我不想为表中的所有列显式创建 colNames 和 colModel,因为这是由 tableToGrid 函数处理的,所以我使用了一个更改冻结列的示例并想出了这个脚本:

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').jq('destroyFrozenColumns');
$('#parcelTable').(jqGrid("setColProp", "rowEdit", { freeze: true }) 等
并得到了同样的信息。

毫无疑问,我犯了一些愚蠢的语法或使用错误,但我不知道从哪里开始,也不知道这是否是最好的方法。 任何帮助表示赞赏 - 谢谢!

【问题讨论】:

    标签: asp.net jqgrid


    【解决方案1】:

    对于冻结标题,您可以使用:

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

    这可以在jqgrid的loadComplete()中执行

    对于列的冻结,您只需将类添加到列定义中

      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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多