/// /// (function (jQuery) { $.fn.extend($.fn.dataTable(), { executePageQuery: function (columns, sAjaxSource, order, badRequest) { /// /// 分页查询处理 /// /// 列名称 /// Ajax数据源 /// 排序,默认第0列,desc /// 发生错误的时候提示处理,默认alert /// order = order || [[0, "desc"]]; badRequest = badRequest || function badRequest(message) { alert(message); } var _table = $(this).dataTable({ "bPaginate": true, "bLengthChange": false, "bFilter": false, "bSort": true, "bInfo": true, 'bProcessing': true, 'bServerSide': true, 'sAjaxSource': sAjaxSource, "autoWidth": false, "bStateSave": true, "oLanguage": { "sZeroRecords": "抱歉, 没有找到", "sInfoEmpty": "表中数据为空", "sZeroRecords": "没有检索到数据", "sProcessing": "处理中...", "sProcessing": "处理中...", "sLengthMenu": "显示 _MENU_ 项结果", "sZeroRecords": "没有匹配结果", "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项", "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项", "sInfoFiltered": "(由 _MAX_ 项结果过滤)", "sInfoPostFix": "", "sSearch": "搜索:", "sUrl": "", "sEmptyTable": "表中数据为空", "sLoadingRecords": "载入中...", "sInfoThousands": ",", "oPaginate": { "sFirst": "首页", "sPrevious": "上页", "sNext": "下页", "sLast": "末页" }, "oAria": { "sSortAscending": ": 以升序排列此列", "sSortDescending": ": 以降序排列此列" } }, "columns": columns, "order": order, "fnServerData": function (sSource, aoData, fnCallback) { $.ajax({ "dataType": 'json', "contentType": "application/json; charset=utf-8", "type": "GET", "url": sSource, "data": aoData, "success": function (msg) { if (msg != null || msg != undefined) { if (msg.StatusCode == 200) { var _json = msg.Message; fnCallback(_json); $(this).show(); } else { fnCallback(msg.Message); badRequest(msg.Message.ExecuteMessage); } } }, error: function (xhr, textStatus, error) { if (typeof console == "object") { console.log(xhr.status + "," + xhr.responseText + "," + textStatus + "," + error); } } }); } }); return _table; }, executeQuery: function (columns, order, pagelength) { /// /// 初始化 /// /// 列名称 /// 排序,默认第0列,desc /// 每页展现数据,默认10行 /// order = order || [[0, "desc"]]; pagelength = pagelength || 10; // var _columns = [ //{ "data": "time", "title": "时间", "class": "center", "width": "20%" }, //{ "data": "log", "title": "日志", "class": "center", "width": "70%" }, //{ "data": "status", "title": "状态", "class": "center", "width": "10%" } // ]; var _table = $(this).dataTable({ language: { "sProcessing": "处理中...", "sLengthMenu": "显示 _MENU_ 项结果", "sZeroRecords": "没有匹配结果", "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项", "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项", "sInfoFiltered": "(由 _MAX_ 项结果过滤)", "sInfoPostFix": "", "sSearch": "搜索:", "sUrl": "", "sEmptyTable": "表中数据为空", "sLoadingRecords": "载入中...", "sInfoThousands": ",", "oPaginate": { "sFirst": "首页", "sPrevious": "上页", "sNext": "下页", "sLast": "末页" }, "oAria": { "sSortAscending": ": 以升序排列此列", "sSortDescending": ": 以降序排列此列" } }, "autoWidth": false, "bStateSave": true, "columns": columns, "order": order, "lengthMenu": [ [5, 15, 20, -1], [5, 15, 20, "全部"] ], "pageLength": pagelength }); return _table; }, addJson: function (json) { /// /// 添加json数据源 /// /// json对象或者json字符串 var _jsonObj = ''; if (jsUtils.isString(json)) { _jsonObj = $.parseJSON(json); } else if (jsUtils.isArray(json)) { _jsonObj = json; } else if (jsUtils.isObject(json)) { _jsonObj = json; } if (!jsUtils.string.isNullOrEmpty(_jsonObj)) { this.dataTable().fnAddData(_jsonObj); this.DataTable().page('first').draw('page');//每次绑定数据后,强制设置选中第一页数据; } }, hightSingleRow: function () { /// /// 高亮选中行并只能选中一行 /// /* *高亮css代码: * table.dataTable tbody tr.selected { background-color: #B0BED9; } */ var _id = $(this).attr('id'); var _table = $('#' + _id).DataTable(); $('#' + _id + ' tbody').on('click', 'tr', function () { if ($(this).hasClass('selected')) { $(this).removeClass('selected'); } else { _table.$('tr.selected').removeClass('selected'); $(this).addClass('selected'); } }); }, hightMutilRow: function () { /// /// 高亮选中行并可以选择多行 /// /* *高亮css代码: * table.dataTable tbody tr.selected { background-color: #B0BED9; } */ var _id = $(this).attr('id'); var _table = $('#' + _id).DataTable(); $('#' + _id + ' tbody').on('click', 'tr', function () { $(this).toggleClass('selected'); }); }, getAllRowsToArray: function () { /// /// 将获取行数据转换为array /// /// Array var _array = new Array(); var _allrows = $(this).DataTable().rows().data(); if (_allrows != null && _allrows.length > 0) { for (var i = 0; i < _allrows.length; i++) { _array.push(_allrows[i]); } } return _array; }, getSelectedRowsData: function () { /// /// 获取选中行数据,若要函数生效可用,请先调用 /// hightSingleRow()或hightMutilRow()函数; /// var _id = $(this).attr('id'); var _table = $('#' + _id).DataTable(); var _data = _table.rows('.selected').data(); return _data; }, getSelectedRowIndex: function () { /// /// 获取选中行索引,若要函数生效可用,请先调用 /// hightSingleRow()或hightMutilRow()函数; /// var _id = $(this).attr('id'); var _table = $('#' + _id).DataTable(); var _index = _table.row('.selected').index(); return _index; }, updateRowByIndex: function (rowIndex, rowData) { /// /// 根据行索引更新行数据 /// /// 行索引 /// 新的行数据 $(this).DataTable().row(rowIndex).invalidate().data(rowData).draw(false); }, deleteRowByIndex: function (rowIndex) { /// /// 根据行索引删除行 /// /// $(this).DataTable().row(rowIndex).remove().draw(false); }, clearAllRows: function () { /// /// 删除所有行 /// $(this).DataTable().clear().draw(); }, getAllRows: function () { /// /// 获取所有行 /// return $(this).DataTable().rows().data(); }, getRowCount: function (id) { /// /// 获取行总数 /// var _allRowsData = $(this).getAllRows(); if (jsUtils.isObject(_allRowsData)) return _allRowsData.length; else return -1; }, rowClickEvent: function (hanlder) { /// /// jquery Datatable 行点击事件 /// /// 方法委托,参数:行数据 var _id = $(this).attr('id'); $('#' + _id + ' tbody').on('click', 'tr', function () { var _table = $('#' + _id).DataTable(); hanlder(_table.row(this).data()); }); }, applySyncCheckstate: function (parentCkId) { /// /// 同步checkbox 选中状态 /// /// 主checkbox id var _id = $(this).attr('id'); $('#' + parentCkId).on('click', function () { var _table = $('#' + _id).DataTable(); var rows = _table.rows({ 'search': 'applied' }).nodes(); $('input[type="checkbox"]', rows).prop('checked', this.checked); }); $('#' + _id + ' tbody').on('change', 'input[type="checkbox"]', function () { if (!this.checked) { var el = $('#' + parentCkId).get(0); if (el && el.checked && ('indeterminate' in el)) { el.indeterminate = true; } } }); }, updateSettings: function (option) { /// /// 更新参数 /// /// //var oTable = $('#tableCabChTotalView').dataTable(); //_visible = !_visible; //oTable.updateSettings({ // "bRetrieve": true, // "bProcessing": true, // "autoWidth": false, // "bLengthChange": _visible, // "bStateSave": true, // "bFilter": _visible, // "bInfo": true, // "columns": [ // { "data": "CabId", "title": "箱的名称", "class": "center", "visible": false }, // { "data": "CabName", "title": "箱的名称", "class": "center" }, // { "data": "ChTotalCount", "title": "回路总数", "class": "center", "visible": false }, // { "data": "TheoryState", "title": "复核状态", "class": "center" }, // { "data": "ReviewTime", "title": "复核时间", "class": "center" }, // { "data": "CabChStatusBase64", "title": "回路状态", "class": "center" }, // { "data": "ChStatusLastTime", "title": "回路更新时间", "class": "center" }, // { "data": "IncomeAvgVoltage", "title": "进线平均电压", "class": "center", "visible": true }, // { "data": "IncomeSumCurrent", "title": "进线合计电流", "class": "center", "visible": true }, // { "data": "IncomeSumPower", "title": "进线合计功率", "class": "center", "visible": false }, // { "data": "IncomeAvgPowerFactor", "title": "进线平均功率因子", "class": "center", "visible": false }, // { "data": "IncomeSumPowerFactor", "title": "进线合计功率因子", "class": "center", "visible": false }, // { "data": "OutcomeAvgVoltage", "title": "出线平均电压", "class": "center", "visible": true }, // { "data": "OutcomeSumCurrent", "title": "出线合计电流", "class": "center", "visible": true }, // { // "title": "进出线详细", // "className": 'details-control', // "orderable": false, // "data": null, // "defaultContent": '' // }, // { "data": "OutcomeSumPower", "title": "出线合计功率", "class": "center", "visible": false }, // { "data": "InLineLastUpdate", "title": "进线更新时间", "class": "center", "visible": false }, // { "data": "OutLineLastUpdate", "title": "出线更新时间", "class": "center", "visible": false }, // { "data": "OutcomeAvgPowerFactor", "title": "出线平均功率因子", "class": "center", "visible": false }, // { "data": "OutcomeSumPowerFactor", "title": "出线合计功率因子", "class": "center", "visible": false }, // { "data": "Region", "title": "隶属区域", "class": "center", "visible": false }, // { "data": "InComeElec", "title": "InComeElec", "class": "center", "visible": false }, // { "data": "OutComeElec", "title": "OutComeElec", "class": "center", "visible": false } // ], // "lengthMenu": [ // [5, 15, 20, -1], // [5, 15, 20, "全部"] // ], // "pageLength": 10, // "pagingType": "bootstrap_full_number", // "columnDefs": [{ // 'orderable': false, // 'targets': [1] // }, { // "searchable": false, // "targets": [1] // }], // "order": [ // [1, "desc"] // ], // "fnRowCallback": function (row, data, displayIndex, displayIndexFull) { // var _imgTag = ''; // $('td:eq(3)', row).html(_imgTag); // return row; // } //}); var _table, _otable, _selector = this.selector;//datatables Id if ($.fn.dataTable.isDataTable(_selector)) { _table = $(_selector).DataTable(), _otable = $(_selector).dataTable(); var _allrows = _otable.fnGetData(); _otable.fnClearTable(); _table.destroy(); var _language = { "language": { "sProcessing": "处理中...", "sLengthMenu": "显示 _MENU_ 项结果", "sZeroRecords": "没有匹配结果", "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项", "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项", "sInfoFiltered": "(由 _MAX_ 项结果过滤)", "sInfoPostFix": "", "sSearch": "搜索:", "sUrl": "", "sEmptyTable": "表中数据为空", "sLoadingRecords": "载入中...", "sInfoThousands": ",", "oPaginate": { "sFirst": "首页", "sPrevious": "上页", "sNext": "下页", "sLast": "末页" }, "oAria": { "sSortAscending": ": 以升序排列此列", "sSortDescending": ": 以降序排列此列" } } } option = $.extend(_language, option); _table = $(_selector).DataTable(option); _otable.fnAddData(_allrows); } }, foreach: function (callback) { /// /// 遍历行 /// /// 回调函数;参数 rowData var _id = $(this).attr('id'); var _table = $('#' + _id).DataTable(); _table.rows().flatten().each(function (idx, i) { var _data = _table.row(idx).data(); callback(_data); }); }, getRowByParam: function (key, value) { /// /// 根据行数据的属性搜索 /// /// 需要精确匹配的属性名称 /// 需要精确匹配的属性值,可以是任何类型,只要保证与 key 指定的属性值保持一致即可 var _id = $(this).attr('id'), _table = $('#' + _id).DataTable(), _rows = new Object(); _table.rows().flatten().each(function (idx, i) { var _data = _table.row(idx).data(); if (_data[key] == value) { _rows = _table.row(idx); return false; } }); return _rows; }, getRowHtmlByParam: function (key, value) { /// /// 根据键值搜索nRow /// /// 需要精确匹配的属性名称 /// 需要精确匹配的属性值,可以是任何类型,只要保证与 key 指定的属性值保持一致即可 /// nRow var _id = $(this).attr('id'), _table = $('#' + _id).dataTable(), _row = null; var _nTrs = _table.fnGetNodes();//fnGetNodes获取表格所有行 for (var i = 0; i < _nTrs.length; i++) { var _rowData = _table.fnGetData(_nTrs[i]); if (_rowData[key] == value) { _row = _nTrs[i]; break; } } return _row; }, deleteRowByParam: function (key, value) { /// /// 根据键值删除行数据 /// /// 需要精确匹配的属性名称 /// 需要精确匹配的属性值,可以是任何类型,只要保证与 key 指定的属性值保持一致即可 var _id = $(this).attr('id'), _table = $('#' + _id).DataTable(); _table.rows().flatten().each(function (idx, i) { var _data = _table.row(idx).data(); if (_data != undefined && _data[key] == value) { var _row = _table.row(idx); _table.row(_row).remove().draw(false); return false;//跳出循环 } }); }, getRowIndexByParam: function (key, value) { /// /// 根据行数据的属性搜索索引 /// /// 需要精确匹配的属性名称 /// 需要精确匹配的属性值,可以是任何类型,只要保证与 key 指定的属性值保持一致即可 var _id = $(this).attr('id'), _table = $('#' + _id).DataTable(), _rowIndex = -1; var _allDatas = _table.rows().data(); for (var i = 0; i < _allDatas.length; i++) { var _data = _allDatas[i]; if (_data[key] == value) { _rowIndex = i; break; } } return _rowIndex; } }); })(jQuery);