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, 

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對應函數用來格式化具體數據項的操作,大家也可以進行參考。

原文鏈接:《JqGrid實現超長水平(左右)滾動條功能

精品SpringBoot 2.x視頻教程

《Spring Boot 2.x 視頻教程全家桶》,精品Spring Boot 2.x視頻教程,打造一套最全的Spring Boot 2.x視頻教程。


程序新視界

公衆號“程序新視界”,一個讓你軟實力、硬技術同步提升的平臺

微信公衆號:程序新視界

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章