1. 程式人生 > >jqGrid表格外掛實現多行表頭的解決辦法

jqGrid表格外掛實現多行表頭的解決辦法

  jqGrid是用來實現表格的jquery外掛,使用該外掛可以輕鬆的實現前端頁面與後臺資料的AJAX互動,使用方便,最近在開發專案中要實現多行表頭的效果,在api中找到的答案是能夠實現2行表頭,那麼要實現多行該如何解決呢?

實現2行表頭的寫法如下:

//形成表格
$("#itemlist_list").jqGrid({
    autowidth:true,
    url:itemlist_g_url.list+"?areamark="+config.areamarkdefault,
    datatype: "json",
    height:'100%',
    colNames:['ID','商品名稱','商品價格','預定數量','是否是合約機','是否在手機端顯示','是否下架','釋出時間'],
    colModel:[
        {name:'itemid',index:'itemid', width:20,key:true,align:'center'},
        {name:'itemname',index:'itemname', width:80},
        {name:'defaultprice',index:'defaultprice', width:40,formatter:'currency',formatoptions:{suffix:"元"},align:'center'},
        {name:'bookcount',index:'bookcount', width:20,align:'center'},
        {name:'dealed',index:'dealed', width:20,formatter:'select', editoptions:{value:config.cusmachine},align:'center'},
        {name:'telshowed',index:'telshowed', width:30,formatter:'select', editoptions:{value:config.itemtelshow},align:'center'},
        {name:'shelfed',index:'shelfed', width:20,formatter:'select', editoptions:{value:config.itemshelf},align:'center'},
        {name:'publishtime',index:'publishtime', width:40, formatter:'datetime',formatoptions:{srcformat: 'Y-m-d H:i:s',newformat:'Y-m-d H:i:s'},align:'center'}
    ],
    rowNum:20,
    sortname:"itemid",
    sortorder:"desc",
    pager:"#itemlist_pager1",
    jsonReader : {
        repeatitems:false,
        id:"itemid"
    },
    viewrecords: true,
    caption: null
});

//實現2行表頭指令碼

$("#itemlist_list").jqGrid('setGroupHeaders', {
    useColSpanStyle: true,
    groupHeaders:[
        {startColumnName:'itemname', numberOfColumns:2, titleText: '商品介紹'},
        {startColumnName:'bookcount', numberOfColumns: 2, titleText: '商品屬性'}
    ]
})

效果如下:

//實現3行表頭指令碼

$("#itemlist_list").jqGrid('setGroupHeaders', {
    useColSpanStyle: true,
    groupHeaders:[
        {startColumnName:'itemname', numberOfColumns:5, titleText: '介紹'}
    ]
})
$("#itemlist_list").jqGrid('setGroupHeaders', {
    useColSpanStyle: true,
    groupHeaders:[
        {startColumnName:'itemname', numberOfColumns:2, titleText: '商品介紹'},
        {startColumnName:'bookcount', numberOfColumns: 2, titleText: '商品屬性'}
    ]
})

效果如下:

多行表頭以此類推,效果如下:

我修改了jquery.jqGrid.src.js原始碼實現了此功能,見下圖

修改原始碼是為了解決表頭多行時單元格合併多行,而不是隻合併2行。

考慮不周的地方還請見諒,期待大家的建議