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. Swift中的Void类型与空元祖表达式

    可能有不少Swift开发者会忽略这么一个细节:在Swift中,Void类型其实是一个别名类型,而其真正的类型为(),即一个空元祖(empty tuple)! 这种语言特性给Swift带来了一些比较方便 ...

  2. crontab使用方法和示例

    crond是linux中的一个定时任务常驻程序,它会在每分钟检查一次作业列表,从而达到在指定时间自动运行指定的作业,这个程序对于系统运维来讲必不可少. 通常我们使用crontab程序来设定和管理作业的 ...

  3. 使用dynamic类型改进反射

    首先还是声明一下,使用场景: 1.如果编译时函数名称确定,对象类型运行时确定,那么运用dynamic是一个好主意.2.如果编译时函数名称确定,对象类型在编译时也确定,那就既不需要反射也不需要dynam ...

  4. ECshop设置301最快捷最简单的方法

    ECshop设置301最快捷最简单的方法 在 init.php中加入以下代码 if (strtolower($_SERVER['SERVER_NAME'])!='www.fz1688.com') { ...

  5. Mac OS X Terminal 101:终端使用初级教程

    Mac OS X Terminal 101:终端使用初级教程 发表于 2012 年 7 月 29 日 由 Renfei Song | 文章目录 1 为什么要使用命令行/如何开启命令行? 2 初识Com ...

  6. 修改 Semantic UI 的默认字体

    Semantic UI 默认使用的是谷歌提供的字体,并且是直接使用了谷歌的官方链接.由于大家都知道的原因,谷歌网站在国内访问速度很差,甚至根本无法访问,还有就是可能会在离线环境下使用 Semantic ...

  7. android 抓包 使用 tcpdmp + Wireshark

         下载地址tcpdump: http://www.androidtcpdump.com/      使用su用户, 给/system/可写的权限 mount -o remount,rw -t ...

  8. Base64的编码转换方式

    下面,详细介绍Base64的编码转换方式. 所谓Base64,就是说选出64个字符----小写字母a-z.大写字母A-Z.数字0-9.符号"+"."/"(再加上 ...

  9. 微信、qq时间格式模板

    产品近来蛋疼,时间格式从做完到现在改了四遍了 ,最新的要求如下: * 2分钟内 无显示 * 2分钟-24小时 HH:mm * 昨天 昨天 HH:mm * 前天 前天 HH:mm * 今年 MM:DD ...

  10. php 设计模式 - 单例

    概述: 作为对象的创建模式,单例确保某一个内在系统中只存在一个实例,它不可以创建副本. 克隆函数(__clone )以及构造函数(__construct )必须声明为私用, 防止外部程序 创建一个新类 ...