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. Codeforces Round #177 (Div. 1) 题解【ABCD】

    Codeforces Round #177 (Div. 1) A. Polo the Penguin and Strings 题意 让你构造一个长度为n的串,且里面恰好包含k个不同字符,让你构造的字符 ...

  2. MapReduce的一点理解

    对于MapReduce编程,大概率的流程用过的人或多或少都清楚,但是归结到细节上,就有的地方不清楚了,下面根据自己的疑问,加上从网上各处,找到的被人的描述,最自己的疑问做出回答. 1. MapRedu ...

  3. tooltip提示插件

    tooltip提示信息插件 原理:定位元素在页面中的位置即坐标信息,将显示节点元素插入到body中绝对应为到相应位置,显示内容从指定元素的属性(dataMess)中获取或者通过设置获取. 使用方法: ...

  4. EF: Returns multi table from procedure

    原文:https://msdn.microsoft.com/en-us/data/jj691402.aspx

  5. WPF自定义控件

    一.ImageButton 1.继承ImageButtonButton,添加依赖属性 using System; using System.Windows; using System.Windows. ...

  6. python 跳出嵌套循环方法

    class LoopError(Exception):pass rs = '' try: for i in range(1, 3): print i rs = 'one ' if i == 1: fo ...

  7. FastSocket客户端/服务端通讯示例

    新建控制台项目,命名为Server 添加FastSocket.SocketBase,FastSocket.Server引用   Socket命令服务类: Sodao.FastSocket.Server ...

  8. 让Windows 7变成WIFI热点

    360要推便携路由器,个人觉得其主要目的是盯住了用户无线设备上的信息.因为如果用户移动设备都通过它这个路由器走的话,未加密的数据全部在他掌控之中. 其实Windows 7以上的系统是非常容易建立无线热 ...

  9. 使用jQuery开发iOS风格的页面导航菜单

    在线演示1 本地下载     申请达人,去除赞助商链接 iOS风格的操作系统和导航方式现在越来越流行,在今天的jQuery教程中,我们将介绍如何生成一个iphone风格的菜单导航. HTML代码 我们 ...

  10. ffmpeg 中 swscale 的用法

    http://www.guguclock.com/2009/12/ffmpeg-swscale.html 如果想將某個PixelFormat轉換至另一個PixelFormat,例如,將YUV420P轉 ...