HTML代码:

<div id="divList">
<div class="toolbar">
</div>
<table id="list">
</table>
<div id="pager">
</div>
</div>
<table id="tableCols" cellpadding="0" cellspacing="0">
<tr>
<td>
<input id="checkAll" type="checkbox" />
</td>
<td class="tdText">
可选显示列:
</td>
<td>
<input type="checkbox" text="发布周期" value="Period" />
</td>
<td class="tdText">
发布周期
</td>
<td>
<input type="checkbox" text="客户执行金额" value="SellAmount" />
</td>
<td class="tdText">
客户执行金额
</td>
<td>
<input type="checkbox" text="开户银行" value="OpenBank" />
</td>
<td class="tdText">
开户银行
</td>
<td>
<input type="checkbox" text="银行账号" value="Account" />
</td>
<td class="tdText">
银行账号
</td>
<td>
<input type="checkbox" text="联系人" value="Linkman" />
</td>
<td class="tdText">
联系人
</td>
<td>
<input type="checkbox" text="电话" value="Phone" />
</td>
<td class="tdText">
电话
</td>
</tr>
</table>

JS代码:

// 查询方法
function search() {
//固定列
var cols = ['Id', 'SupplierId', '年份', '合同编号', '项目名称', '供应商名称', '媒体点位', '合同时间', '上画时间', '合同总金额', '票据情况', '票据说明', '到票时间'];
var rows = [{ name: 'Id', hidden: true },
{ name: 'SupplierId', hidden: true },
{ name: 'Year', sortable: false, width: 35, fixed: true },
{ name: 'ContractNo', sortable: false, width: 80, fixed: true, formatter: function (v, o, r) {
return "<a href='javascript:void(0)' onclick='view(\"" + r["Id"] + "\")' > " + v + "</a>";
}
},
{ name: 'ProjectName', sortable: false, width: 80, fixed: true },
{ name: 'SupplierName', sortable: false, width: 80, fixed: true, formatter: function (v, o, r) {
return "<a href='javascript:void(0)' onclick='viewSupplier(\"" + r["SupplierId"] + "\")' > " + v + "</a>";
}
},
{ name: 'Location', sortable: false, width: 80, fixed: true, formatter: function (v, o, r) {
return "<a href='javascript:void(0)' onclick='viewPurchase(\"" + r["Id"] + "\")' > " + v + "</a>";
}
},
{ name: 'DispContractStartTime', sortable: false, width: 80, fixed: true },
{ name: 'DispDrawingTime', sortable: false, width: 80, fixed: true },
{ name: 'SumAmount', sortable: false, width: 80, fixed: true, align: "right" },
{ name: 'InvoiceCondition', sortable: false, width: 60, fixed: true },
{ name: 'InvoiceDesc', sortable: false, width: 80, fixed: true },
{ name: 'ReceiveInvoiceTime', sortable: false, width: 80, fixed: true}]; //可选列
$("#tableCols").find("input[text]:checked").each(function () {
var checkbox = $(this);
var colName = checkbox.val();
var text = checkbox.attr("text");
cols.push(text);
rows.push({ name: colName, sortable: false, width: 80, fixed: true });
}); //月份列
cols.push("1月份");
cols.push("2月份");
cols.push("3月份");
cols.push("4月份");
cols.push("5月份");
cols.push("6月份");
cols.push("7月份");
cols.push("8月份");
cols.push("9月份");
cols.push("10月份");
cols.push("11月份");
cols.push("12月份");
rows.push({ name: "NotPay1", sortable: false, width: 80, fixed: true });
rows.push({ name: "NotPay2", sortable: false, width: 80, fixed: true });
rows.push({ name: "NotPay3", sortable: false, width: 80, fixed: true });
rows.push({ name: "NotPay4", sortable: false, width: 80, fixed: true });
rows.push({ name: "NotPay5", sortable: false, width: 80, fixed: true });
rows.push({ name: "NotPay6", sortable: false, width: 80, fixed: true });
rows.push({ name: "NotPay7", sortable: false, width: 80, fixed: true });
rows.push({ name: "NotPay8", sortable: false, width: 80, fixed: true });
rows.push({ name: "NotPay9", sortable: false, width: 80, fixed: true });
rows.push({ name: "NotPay10", sortable: false, width: 80, fixed: true });
rows.push({ name: "NotPay11", sortable: false, width: 80, fixed: true });
rows.push({ name: "NotPay12", sortable: false, width: 80, fixed: true }); //列表
$("#divList").html('<div class="toolbar"></div><table id="list"></table><div id="pager"></div>');
$("#list").jqGrid({
url: '#{GetSummaryIndexData}',
serializeGridData: function (postData) {
return Simpo.ui.jqGrid.serializeGridData(postData);
},
datatype: "json",
colNames: cols,
colModel: rows,
rowNum: 10,
rowList: [10, 20, 30],
pager: '#pager',
sortable: false,
sortname: 'Id',
sortorder: "desc",
viewrecords: true,
rownumbers: true,
multiselect: true,
height: 'auto',
width: $(".adminMainContent").width(),
loadComplete: function (xhr) {
Simpo.ui.jqGrid.loadComplete("list", xhr); //遍历数据行,将支付完毕的行颜色锁定
$("#list").find("tr[id]").each(function () {
var tr = $(this); var noDataCount = 0;
tr.find("td").each(function () {
var td = $(this);
if ($.trim(td.html()) == "NoData") {
noDataCount++;
}
});
if (noDataCount == 12) {
tr.find("td").css("background-color", "#e6e6e6");
}
}); //还原显示所有月份列
var titleTable = $("#list").parent().parent().parent().find("table:first");
for (var i = 40; i >= 10; i--) {
var th = titleTable.find("tr").find("th:eq(" + i + ")");
if (th) th.css("display", "");
}
for (var i = 40; i >= 10; i--) {
$("#list").find("tr").each(function () {
var tr = $(this); var td = tr.find("td:eq(" + i + ")");
if (td) td.css("display", "");
});
} //隐藏没有数据的月份列
for (var i = 40; i >= 10; i--) {
var del = true; //遍历数据行的i列
$("#list").find("tr[id]").each(function () {
var tr = $(this); var td = tr.find("td:eq(" + i + ")");
if (td) {
if ($.trim(td.html()) != "NoData") {
del = false;
}
}
else {
del = false;
}
}); if (del) {
//隐藏标题行的i列
titleTable.find("tr").each(function () {
var tr = $(this); var th = tr.find("th:eq(" + i + ")");
th.css("display", "none");
}); //隐藏数据行的i列
$("#list").find("tr").each(function () {
var tr = $(this); var td = tr.find("td:eq(" + i + ")");
td.css("display", "none");
});
} //遍历数据行的i列,删除NoData标记
$("#list").find("tr[id]").each(function () {
var tr = $(this); var td = tr.find("td:eq(" + i + ")");
if (td) {
if ($.trim(td.html()) == "NoData") {
td.html("&nbsp;");
}
}
});
}
},
onHeaderClick: function () {
Simpo.ui.jqGrid.autoWidth("list"); // 自动宽度
},
loadError: function (xhr, status, error) {
Simpo.ui.jqGrid.loadError("list", xhr, status, error);
}
});
jQuery("#list").jqGrid('navGrid', '#pager', { edit: false, add: false, del: false, search: false }).jqGrid('sortableRows'); var postData = Simpo.ui.jqGrid.serializeGridData("list");
jQuery("#list").jqGrid('setGridParam', { postData: postData, page: 1 }).trigger("reloadGrid");
}

jqGrid动态列的更多相关文章

  1. jqGrid动态增加列,使用在根据条件筛选而出现不同的列的场景

    function GetGrid2() { var jqdata = [ { Encode:"20180100", FullName: "BYD", SpecT ...

  2. Dynamic CRM 2013学习笔记(二十六)报表设计:Reporting Service报表 动态参数、参数多选全选、动态列、动态显示行字体颜色

    上次介绍过CRM里开始报表的一些注意事项:Dynamic CRM 2013学习笔记(十五)报表入门.开发工具及注意事项,本文继续介绍报表里的一些动态效果:动态显示参数,参数是从数据库里查询出来的:参数 ...

  3. extjs动态树 动态grid 动态列

    由于项目需要做一个动态的extjs树.列等等,简而言之,就是一个都是动态的加载功能, 自己琢磨了半天,查各种资料,弄了将近两个星期,终于做出来了 首先,想看表结构,我的这个功能需要主从两张表来支持 代 ...

  4. displaytag 动态列实现

    这种动态列的实现方法来自displaytag-examples-1.2.war提供的示例中,实际上下载下来的zip文件中不仅有各种jar包,还有这个包含各种例子的war包,是学习displaytag的 ...

  5. Easy DataGrid 实现动态列、行

    Easy DataGrid 实现动态列.行 前端代码: <title>展示销售的实时数据</title> <script type="text/javascri ...

  6. 记React+.NetCore API实现动态列导出

    1.效果演示 2.用到的第三方类库 前端:React,Dva,Antd 后端:ASP.NET CORE,System.Linq.Dynamic.Core,EPPlus.Core 3.基本思路 第一:E ...

  7. datatable动态列处理,重绘表格(敲黑板,划重点!!!我肝了一天半才彻底弄懂这个东西,TAT)

    datatable动态列处理,重绘表格 前言:至于动态列的绘画,我前面博客已经写过了,就是动态列的配置问题,不懂的去我博客看下,今天要写的呢,就是你已经写了一个动态列在datatable,现在你想重新 ...

  8. jqGrid选择列控件向右拖拽超出边界处理

    jqGrid选择列控件向右拖拽超出边界处理 $("#tb_DeviceInfo").jqGrid('navButtonAdd', '#jqGridPager', {         ...

  9. [转]bootstrap table 动态列数

    原文地址:https://my.oschina.net/u/2356355/blog/1595563 据说bootstrap table非常好用,从入门教程中了解到它的以下主要功能: 由于固定表头意味 ...

随机推荐

  1. ecshop 全站内页 显示最新文章

    一.打开根目录下index.php,找到代码 $smarty->assign('new_articles',    index_get_new_articles());   // 最新文章 进行 ...

  2. 转:NO.523 Aidan Hawken&Carina Round - Walking Blind

    NO.523 Aidan Hawken&Carina Round - Walking Blind 好像是好几天没来更新过 也没有找歌 因为这几天一直在追美剧 吸血鬼日记 好不容易 今天追到了第 ...

  3. This application is currently offline. To enable the application, remove the app_offline.htm file from the application r

    退出VS ,把程序中主目录里的app_offline.htm文件删除,重新启动VS 就可以了.

  4. GPUImage 内置滤镜解析

    #pragmamark - 调整颜色 Handle Color GPUImageBrightnessFilter //亮度GPUImageExposureFilter //曝光GPUImageCont ...

  5. 多个App间传递数据

    平台:Android两个App:A,B:需求:在A中点击一个按钮后,启动B并把数据从A传递到B: 代码: App A: MainActivity.java中添加: Button btn2 = (But ...

  6. gtest 安装

    1.下载,https://code.google.com/p/googletest/.解压,进入该目录,按REAME说明 安装:1.5之前 make install可以安装,1.6之后不可以...安装 ...

  7. 精选19款华丽的HTML5动画和实用案例

    下面是本人收集的19款超酷HTML5动画和实用案例,觉得不错,分享给大家. 1.HTML5 Canvas火焰喷射动画效果 还记得以前分享过的一款HTML5烟花动画HTML5 Canvas烟花特效,今天 ...

  8. golang append

    1) Append a slice b to an existing slice a: a = append(a, b...) 2) Copy a slice a to a new slice b: ...

  9. 关于windows的service编程

    最近需要学习下windows的service编程框架,查了下msdn发现不知所云.于是谷歌之,发现了一个非常不错的文章,重点推荐讲的非常详细,深入,看完之后基本上就能很清楚windows的servic ...

  10. mysql日期类型默认值'0000-00-00'容错处理

    mysql日期默认值'0000-00-00'惹的祸 .net连mysql数据库时,如果表里有字段是日期型且值是‘0000-00-00’时,会报错.在C#里面日期不可能是那样的.或许是最小日期定义的差别 ...