Jqgrid動態列多表頭


說明:jqgrid動態多表主要是一級頭(欄目)動態和二級表頭(欄目1、2、3、4、5...)動態

圖例

1:數據源是一個dataTable,拿到數據進行列明循環綁定,此處為二級表頭

 1 //二級表頭
 2                 var names = []; //顯示列名
 3                 var model = []; //綁定列名
 4                 var num = 1;  //設定num主要是區分前幾列固定不需要動態,可以單獨設置一些不同的屬性,如寬度、固定列等
 5                 //此處因為數據源數組中的結構相同且不為空,直接遍歷索引為0的數據即可  data1.RptResultInfo.Result 是后台傳過來的DataTable
 6                 $.each(data1.RptResultInfo.Result[0], function (key, value) {
 7                     if (num == 1) {
 8                         names.push("No");
 9                         model.push({
10                             name: key,
11                             index: key,
12                             align: "center",
13                             sortable: false,
14                             frozen: true,
15                             width: 50
16                         });
17                     } else if (num == 2) {
18                         names.push(key);
19                         model.push({
20                             name: key,
21                             index: key,
22                             align: "center",
23                             sortable: false,
24                             frozen: true,
25                             width: 150
26                         });
27                     } else {
28                         names.push(key);
29                         model.push({
30                             name: key,
31                             index: key,
32                             align: "left",
33                             sortable: false,
34                             width: 100
35                         });
36                     }
37                     num++;
38                 })
39 
40                 jQuery("#j_tableList").jqGrid({
41                     colNames: names,
42                     colModel: model,
43                     rowNum: 500,
44                     footerrow: true,
45                     pager: '#pager',
46                     mtype: "post"//向后台請求數據的ajax的類型 可選post,get
47                 });
48 //滑動時凍結列設置
49                 $('#j_tableList').jqGrid('setFrozenColumns');                
View Code

2:此處為一級表頭,numberOfColumns:5是因為我的這個已經固定了每個5列,如果二級表是動態數量的話,可以在后台算好,傳一個LIst<T>類型對numberOfColumns屬性賦值即可。

 1  //一級表頭
 2                 var topname = [];
 3  //data1.lms 是后台傳過來的一個List<string>類型的一級表頭
 4                 $.each(data1.lms, function (key, value) {
 5                     topname.push({
 6                         startColumnName: value + "1", //從哪一列開始綁定
 7                         numberOfColumns: 5,//合並5列
 8                         titleText: value   //顯示值
 9                     });
10                 })
11                 $("#j_tableList").jqGrid('setGroupHeaders', {//多表頭
12                     useColSpanStyle: true,
13                     groupHeaders: topname
14                 });        
View Code

說明一下,一二級多表頭關聯時,一級表頭是通過startColumnName屬性來關聯上二級表頭

附帶效果圖:

sql:可以自行百度列轉行

jqgrid:

后台拼數據可以先把類目名稱提取出來,再把門店名稱進行和類目名稱合並成一行,統一傳回前台即可。

此查詢為ajax進行查詢,每次查詢之前,需要進行表格的清空,因為jqgrid拿 到數據是填充到html上的,所以需要進行清空html再進行綁定值

1 //清空表格
2 $("#table-box").html("");
3 var jqstr = ' <table id="j_tableList" class="table table-striped"></table><div class="pagination-wrap text-center" id="Pagination" style="display:none;"></div>';
4 $("#table-box").html(jqstr);
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM