JqGrid实现超长水平(左右)滚动条功能

简介: JqGrid实现超长水平(左右)滚动条功能

使用JqGrid来实现列表功能非常方便快捷,但在使用的过程中还会遇到一些定制化的问题。这篇文章来跟大家说一下当列表中数据比较多时,如何实现水平(左右)滚动来确保能够查看完整的信息。

字段较少情况

在字段较少的情况,直接使用即可,无效做其他调整。下面贴一下简单的示例代码:

$(function () {
    $("#jqGrid").jqGrid({
        url: baseURL + 'biz/message/list',
        datatype: "json",
        colModel: [     
      { label: 'id', name: 'id', index: 'id', width: 50, key: true },
      { label: '标题', name: 'title', index: 'title', width: 80 },      
      { label: '内容', name: 'content', index: 'content', width: 80 },      
      { label: '类型', name: 'type', index: 'type', width: 80 ,
                formatter: function (value, options, row) {
                    if(value == '0'){
                        return '<span class="label label-success">定时</span>';
                    } else if(value == '1'){
                        return '<span class="label label-danger">手动</span>';
                    }
                }},
      { label: '状态', name: 'status', index: 'status', width: 80 ,
                formatter: function (value, options, row) {
                    if(value == '0'){
                        return '<span class="label label-success">待发送</span>';
                    } else if(value == '1'){
                        return '<span class="label label-default">已发送</span>';
                    }
                }},
      { label: '创建时间', name: 'createTime', index: 'create_time', width: 80 },       
      { label: '更新时间', name: 'updateTime', index: 'update_time', width: 80 }      
        ],
    viewrecords: true,
        height: 385,
        rowNum: 10,
    rowList : [10,30,50],
        rownumbers: true, 
        rownumWidth: 25, 
        autowidth:true,
        multiselect: true,
        pager: "#jqGridPager",
        jsonReader : {
            root: "page.list",
            page: "page.currPage",
            total: "page.totalPage",
            records: "page.totalCount"
        },
        prmNames : {
            page:"page", 
            rows:"limit", 
            order: "order"
        },
        gridComplete:function(){
          //隐藏grid底部滚动条
          $("#jqGrid").closest(".ui-jqgrid-bdiv").css({ "overflow-x" : "hidden" }); 
        }
    });
});

默认情况下没有开启水平滚动条,无论有多少字段,都会显示在这一屏,字段比较少时无影响。但字段一旦多了,问题就出来了。此种情况下,jqGrid显示的内容的列宽并没有按照设置的列宽显示。列被压缩。则按比例初始化列宽度。


字段较多情况

针对字段较多的情况,官方提供了两个属性来进行解决。


shrinkToFit:false,

autoScroll: true,

1

2

shrinkToFit:用来说明当初始化列宽度时候的计算类型,如果为ture,则按比例初始化列宽度。如果为false,则列宽度使用colModel指定的宽度。默认值为true。


autoScroll:如果为ture时,则当表格在首次被创建时会根据父元素比例重新调整表格宽度。如果父元素宽度改变,为了使表格宽度能够自动调整则需要实现函数:setGridWidth。


了解了这两个属性的值之后,我们就可以对上面的代码进行重新修改,以满足需求。


$(function () {
    $("#jqGrid").jqGrid({
        url: baseURL + 'biz/message/list',
        datatype: "json",
        colModel: [     
      { label: 'id', name: 'id', index: 'id', width: 50, key: true },
      { label: '标题', name: 'title', index: 'title', width: 80 },      
      { label: '内容', name: 'content', index: 'content', width: 80 },      
      { label: '类型', name: 'type', index: 'type', width: 80 ,
                formatter: function (value, options, row) {
                    if(value == '0'){
                        return '<span class="label label-success">定时</span>';
                    } else if(value == '1'){
                        return '<span class="label label-danger">手动</span>';
                    }
                }},
      { label: '状态', name: 'status', index: 'status', width: 80 ,
                formatter: function (value, options, row) {
                    if(value == '0'){
                        return '<span class="label label-success">待发送</span>';
                    } else if(value == '1'){
                        return '<span class="label label-default">已发送</span>';
                    }
                }},
      { label: '创建时间', name: 'createTime', index: 'create_time', width: 80 },       
      { label: '更新时间', name: 'updateTime', index: 'update_time', width: 80 }      
        ],
    viewrecords: true,
        height: 385,
        rowNum: 10,
    rowList : [10,30,50],
        rownumbers: true, 
        rownumWidth: 25, 
        autowidth:true,
        multiselect: true,
        // 新增的部分
        shrinkToFit:false, 
    autoScroll: true, 
        pager: "#jqGridPager",
        jsonReader : {
            root: "page.list",
            page: "page.currPage",
            total: "page.totalPage",
            records: "page.totalCount"
        },
        prmNames : {
            page:"page", 
            rows:"limit", 
            order: "order"
        }
    });
});

当使用上述代码完成调整之后,还需要做的一件事就是将每列数据的width值进行大小的调整,以适合具体的展示效果。

在上述实例中,针对列表还展示了formatter对应函数用来格式化具体数据项的操作,大家也可以进行参考。

目录
相关文章
|
JSON JavaScript 小程序
关于HBuilderX的简单介绍
关于HBuilderX的简单介绍
3919 0
|
11月前
|
Arthas 监控 Java
拥抱 OpenTelemetry:阿里云 Java Agent 演进实践
本文介绍了阿里云 Java Agent 4.x 版本在基于 OTel Java Agent 二次开发过程中的实践与思考,并重点从功能、性能、稳定性、兼容性四个方面介绍了所做的工作。同时也介绍了阿里云可观测团队积极参与开源建设取得的丰厚成果。
869 119
拥抱 OpenTelemetry:阿里云 Java Agent 演进实践
C# .net webapi使用swagger时显示controller注释
C# .net webapi使用swagger时显示controller注释
522 0
|
XML Java 数据库连接
Myatis 系列之 一对多、多对一 及 ResultMap的使用
文章详细介绍了Mybatis中使用`resultMap`处理数据库表字段名和实体类属性名不一致问题,以及实现一对多和多对一关系映射的方法,并提供了相应的XML配置和测试用例。
Myatis 系列之 一对多、多对一 及 ResultMap的使用
|
Kubernetes 监控 应用服务中间件
深入Docker实战(第2版):构建、部署和优化容器化应用
深入Docker实战(第2版):构建、部署和优化容器化应用
1397 1
|
监控 数据挖掘 数据安全/隐私保护
ERP系统中的资产管理与维护
【7月更文挑战第25天】 ERP系统中的资产管理与维护
455 2
|
机器学习/深度学习
【元学习meta-learning】通俗易懂讲解元学习以及与监督学习的区别
本文通过通俗易懂的方式解释了元学习(Meta-learning)的概念及其与传统监督学习的区别,并通过实例说明了元学习是如何让模型具备快速学习新任务的能力。
1738 1
|
Oracle 关系型数据库 MySQL
入职必会-开发环境搭建17-IDEA连接数据库
IntelliJ IDEA集成了众多插件,方便开发者使用,使用IDEA自带的Database模块就可以很方便的配置、连接数据库,在 IntelliJ IDEA 中连接数据库,可以按照以下步骤进行操作。
630 0
|
网络协议 Java API
Python网络编程基础(Socket编程)Twisted框架简介
【4月更文挑战第12天】在网络编程的实践中,除了使用基本的Socket API之外,还有许多高级的网络编程库可以帮助我们更高效地构建复杂和健壮的网络应用。这些库通常提供了异步IO、事件驱动、协议实现等高级功能,使得开发者能够专注于业务逻辑的实现,而不用过多关注底层的网络细节。
|
SQL 存储 数据挖掘
带你读《Apache Doris 案例集》——05 当 Apache Doris 遇上大模型:探秘腾讯音乐如何 基于大模型+ OLAP 构建智能数据服务平台(1)
带你读《Apache Doris 案例集》——05 当 Apache Doris 遇上大模型:探秘腾讯音乐如何 基于大模型+ OLAP 构建智能数据服务平台(1)
336 0