//首先,添加datatable控件的引用。
<link href="~/Content/BootStrap/frontmcoinquery/bootstrap-table.css" rel="stylesheet" />
<script src="~/Content/BootStrap/frontmcoinquery/bootstrap-table.js"></script>
<script src="~/Content/BootStrap/frontmcoinquery/bootstrap-table-zh-CN.js"></script>
//页面加载时 初始化 datatable
1 function loadEleList( ) {
2 var table = $("#dtEleList").dataTable(
3 {
4 "bProcessing" : true,
5 "aLengthMenu" : [ 10, 15, 100 ],
6 "iDisplayLength" : 10,
7 "bPaginate": true,
8 "bServerSide" : true,
9 "iCookieDuration": 0,
10 "bScrollAutoCss": true,
11 /* "sScrollX": "100%",
12 "sScrollXInner": "110%",
13 "bScrollCollapse": true, */
14 "bDestroy" : true,
15 "bAutoWidth" : false,
16 "bFilter" : false,// 搜索栏
17 "bStateSave" : false,//状态保存,使用了翻页或者改变了每页显示数据数量,会保存在cookie中,下回访问时会显示上一次关闭页面时的内容
18 "sPaginationType" : 'full_numbers', // default 'two_button' //分页显示 数字或者上下页按钮
19 "sAjaxSource" : "${ctx}/contract/eleMntlistData“, // 访问后台的控制层 返回json 数据 绑定到datatable
20 "aaSorting" : [ [ 2, "desc" ] ], //索引从0开始
21 "aoColumns" : [ {
22 "mDataProp" : 'id',
23 bSortable : false,
24 "mRender" : function(data, type, row) {
25 var conid=row.conid
26 return '<input type="checkbox" value="'+ row.id+ '" id="'+ row.id+ '" > ';
27 }
28 },{
29 "mDataProp" : 'equRegCode',
30 bSortable : false
31 },
32 {
33 "mDataProp" : 'name',
34 "bVisible": false,
35 "mRender": function ( data, type, row ) { /*type="text"*/
36 return '<input type="hidden" class="orgName" value="'+row.name+'"/>';
37 } ,
38 bSortable : false
39 },
40 {
41 "mDataProp" : 'contractId',
42 bSortable : false
43 }, {
44 "mDataProp" : 'contractName',
45 bSortable : false
46 },{
47 "mDataProp" : "id",
48 "mRender" : function(data, type, row) {
49 var str ="";
50 if(row.contractId !=null){
51 str = "<button onclick=\"deleteCont('"+row.conequid+"')\" class='btn btn-warning btn-sm' type='button'> 删除 </button>";
52 }else{
53 str = "<button class='btn btn-default btn-sm' type='button' disabled=''> 删除 </button>";
54 }
55 return str;
56 },
57 bSortable : false
58 } ],
59 "fnRowCallback" : function(nRow, aData, iDisplayIndex) {
60 $('td:eq(0)', nRow).attr('style','text-align: center;');
61 $('th:eq(0)').attr('style','text-align: center;');
62 $(nRow).on("click",function(){
63 var nclass = iDisplayIndex%2==1?"even":"odd";
64
65 if ($(nRow).attr("class")==nclass) {
66 $(nRow).removeClass(nclass);
67 $(nRow).addClass("alert-warning");
68 $(nRow).find("input[type='checkbox']").each(function() {
69 this.checked = true;
70 var eleId = $("#eleId").val()
71 if (eleId=="") {
72 $("#eleId").val(this.value);
73 }else{
74 $("#eleId").val(eleId+","+this.value);
75 }
76 });
77 }else{
78 $(nRow).removeClass("alert-warning");
79 $(nRow).addClass(nclass);
80 $(nRow).find("input[type='checkbox']").each(function() {
81 this.checked = false;
82 var eleId = $("#eleId").val();
83 var eleIds = eleId.split(",");
84 for (var i = 0; i < eleIds.length; i++) {
85 if (this.value==eleIds[i]) {
86 eleIds.splice(i,1);
87 }
88
89 }
90 $("#eleId").val(eleIds.join(","))
91 });
92 }
93
94 })
95
96 },
97 "fnDrawCallback" : function(oSettings) {
98 var eleId = $("#eleId").val();
99 var eleIds = eleId.split(",");
100 for (var i = 0; i < eleIds.length; i++) {
101 var id = eleIds[i];
102 $("#" + id + "").attr("checked", "");
103 $("#"+id+"").parent().parent().attr("class","alert-warning")
104 }
105 if ($(":checkbox:checked").length==1) {
106 $("input[type='checkbox']").each(function() {
107 this.checked = false;
108 });
109 } else if($(":checkbox:checked").length>1){
110 $("#allSelect").prop("checked",true);
111 }
112 deletehandle();
113 },
114 });
115 }
1 以上部分是 jquery datatable的数据绑定 , 数据格式是后台传回来的 带分页的json 格式
2 这部分是 表格的checkbox 全选和取消全选
1 var selectIds = []; 先定义一个数组 用来存储保存的选中的checkbox的id 2 //var isCheckAll = false; 3 function swapCheck(obj) { 4 var isCheckAll = obj.checked; 5 if (isCheckAll==false) { 6 var idstr = $("#eleId").val(); 7 var idss = idstr.split(","); 8 $("input[type='checkbox']").each(function() { 9 this.checked = false; 10 var trs=$("table#dtEleList tr"); 11 var index=trs.index($(this).parent().parent().closest("tr")); 12 if (index>0) { 13 $(this).parent().parent().attr("class",(index%2==1?"odd":"even")); 14 } 15 var no = $.inArray(this.value, idss); 16 if (no != -1) { 17 idss.splice(no, 1); 18 } 19 var no1 = $.inArray(this.value, selectIds); 20 if (no1 != -1) { 21 selectIds.splice(no1, 1); 22 } 23 24 25 }); 26 $("#eleId").val(idss.join(",")) 27 //isCheckAll = false; 28 } else if(isCheckAll==true){ 29 30 $("input[type='checkbox']").each(function() { 31 this.checked = true; 32 if (isNull($(this).parent().parent().attr("class"))!="") { 33 $(this).parent().parent().attr("class","alert-warning"); 34 } 35 var index = $.inArray(this.value, selectIds); 36 ; 37 if (index == -1) { 38 selectIds.push(this.value) 39 } 40 }); 41 //$("#eleId").val(""); 42 var id = selectIds.join(",") 43 if (id.startsWith(",")) { 44 id = id.substring(1, id.length + 1); 45 } 46 if (id.endsWith(",")) { 47 id = id.substring(0, id.length); 48 } 49 $("#eleId").val(id) 50 //isCheckAll = true; 51 } 52 }
以下是html 代码部分 主要是设置表格的标题
1 <div class="ibox float-e-margins"> 2 3 <input type="hidden" id="eleId"> 4 <div class="ibox-title"> 5 <h5>电梯信息</h5> 6 </div> 7 8 <div class="ibox-content" style="padding-bottom: 50px"> 9 <div id="mntEleListTable" style="overflow: hidden;overflow-x:auto;"> 10 <table cellpadding="0" cellspacing="0" border="0" id="dtEleList" 11 style="width: 100%;table-layout:fixed;overflow :auto" > 12 <thead> 13 <tr> 14 <th width="5%" style="text-align: center;"><input 15 type="checkbox" value="" onclick="swapCheck(this)" id="allSelect"/></th> 16 <th style="width: 15%;">设备注册代码</th> 17 <th style="width: 25%; display:none;">使用单位名称</th> 18 <th style="width: 20%;">合同编号</th> 19 <th style="width: 20%;">合同名称</th> 20 <th style="width: 8%;">操作</th> 21 </tr> 22 </thead> 23 <tbody></tbody> 24 </table> 25 </div> 26 </div> 27 </div>