//获得table var tracywindy_tables = {}; if (!window.JsonUtil) { alert("请导入json的js类库"); } function getTracywindyTable(tableId) { return getTracywindyObject(tableId); } var tracywindyDynamicLoadJs = function(jsLocation) { ajaxRequest({ url: jsLocation, async: false, success: function(response) { var source = (response.responseText); var oHead = document.getElementsByTagName("HEAD").item(0); var oScript = document.createElement("script"); oScript.language = "javascript"; oScript.type = "text/javascript"; oScript.defer = true; oScript.text = source; oHead.appendChild(oScript); }, failure: function(response) {}, params: {} }); }; function expandOrCollapseQueryArea(tableId,isInit) { var currentOperTable = getTracywindyObject(tableId); if( isInit && currentOperTable){ if(!currentOperTable.isQueryAreaInit ){ currentOperTable.isQueryAreaInit = true; if(currentOperTable.queryAreaDiv){ var $me = currentOperTable; var oldDisplay = ""; if ($me.displayToggleContainerObj) { oldDisplay = $me.displayToggleContainerObj.style.display; $me.displayToggleContainerObj.style.display = "block"; } currentOperTable.queryAreaDivHeight = currentOperTable.queryAreaDiv.offsetHeight; currentOperTable.tableDiv.style.height = (parseInt(currentOperTable.tableDiv.style.height) - currentOperTable.queryAreaDivHeight) + "px"; if ($me.displayToggleContainerObj) { $me.displayToggleContainerObj.style.display = oldDisplay; } } } return; } if ("none" == currentOperTable.queryAreaDiv.style.display) { document.getElementById(tableId + "_expandOrCollapseButton").value = "折叠"; currentOperTable.queryAreaDiv.style.display = ""; currentOperTable.queryAreaDivHeight = currentOperTable.queryAreaDiv.offsetHeight; if (!currentOperTable.isPagePrint && !currentOperTable.isAutoHeight) { currentOperTable.tableDiv.style.height = (parseInt(currentOperTable.tableDiv.style.height) - currentOperTable.queryAreaDivHeight) + "px"; try { currentOperTable.lockedTableDiv.style.height = (parseInt(currentOperTable.lockedTableDiv.style.height) - currentOperTable.queryAreaDivHeight) + "px"; currentOperTable.lockedTableDiv.oldHeight = parseInt(currentOperTable.lockedTableDiv.style.height); currentOperTable.tableDiv.oldHeight = (parseInt(currentOperTable.tableDiv.oldHeight) - currentOperTable.queryAreaDivHeight); } catch(e) {} } } else { document.getElementById(tableId + "_expandOrCollapseButton").value = "显示"; currentOperTable.queryAreaDiv.style.display = "none"; if (!currentOperTable.isPagePrint && !currentOperTable.isAutoHeight) { currentOperTable.tableDiv.style.height = (parseInt(currentOperTable.tableDiv.style.height) + currentOperTable.queryAreaDivHeight) + "px"; try { // currentOperTable.lockedTableDiv.style.height = (parseInt(currentOperTable.lockedTableDiv.style.height) + currentOperTable.queryAreaDivHeight) + "px"; currentOperTable.lockedTableDiv.style.height = (parseInt(currentOperTable.lockedTableDiv.style.height) + currentOperTable.queryAreaDivHeight) + "px"; currentOperTable.lockedTableDiv.oldHeight = parseInt(currentOperTable.lockedTableDiv.style.height); currentOperTable.tableDiv.oldHeight = (parseInt(currentOperTable.tableDiv.oldHeight) + currentOperTable.queryAreaDivHeight); } catch(e) {} } } } function popupReadOnlyWindow(table,rowData){ var columns = table.columns; var tableId = table.id; var itemLen = 0; var itemHeaders = []; var itemValues = []; for(var i = 0;i < columns.length;i++){ var column = columns[i]; if(!column.hidden){ var itemValue = rowData[column.mapping||column.name]; if("undefined" != typeof(itemValue)){ itemLen++; itemHeaders.push(column.header); itemValues.push(column['renderer'](itemValue, table, "", -1, rowData)); } } } var itemWindowHtmlArr = []; var windowId = tableId+"popupReadOnlyWindow"; var windowDom = document.getElementById(windowId); if(windowDom){ if('BODY'!=jQuery("#"+windowId).parent()[0].tagName){ jQuery("#"+windowId).parent().remove(); }else{ jQuery("#"+windowId).remove(); } jQuery("#"+windowId+"dlg-buttons").remove(); } var panelWidth = 500; itemWindowHtmlArr.push(""); jQuery(document.body).append(jQuery(itemWindowHtmlArr.join(""))); var clientWidth = ((0 == document.documentElement.clientWidth) ? document.body.clientWidth : document.documentElement.clientWidth); var clientHeight = ((0 == document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight); jQuery("#"+windowId).show(); var offsetHeight = document.getElementById(windowId+"Table").offsetHeight; var adjustWidth = ((clientWidth - 26) > panelWidth ) ? panelWidth : (clientWidth - 26); var adjustHeight = ((offsetHeight + 80) > clientHeight ) ? (clientHeight - 80) : offsetHeight; jQuery("#"+windowId).css({ position:"absolute", zIndex:999999, background:"#FFFFFF", top : 20 + Math.max(document.documentElement.scrollTop,document.body.scrollTop)+"px", left: (( clientWidth - adjustWidth - 24 )/2 + Math.max(document.documentElement.scrollLeft,document.body.scrollLeft)) +"px" }); jQuery("#"+windowId+"Table").parent().css({ width:adjustWidth+"px", height:adjustHeight+"px" }); jQuery("#"+windowId).draggable({ handle:'#'+windowId+"Title" }); /*var config = { zIndex:999999, draggable:true, title:'数据预览', resizable:true, shadow:true, modal:true, inline:false, collapsible:false, minimizable:false, maximizable:false, closable:true }; jQuery("#"+windowId).dialog(config); jQuery("#"+windowId).dialog("open");*/ } //导出excel function function exportExcelData(tableId) { var pageNum = jQuery('.x-panel-table-div-page-number'); pageNum.each(function(i,e){ if(i == 1){ var d = new Date(); var day = d.getHours(); var pageNum = Number(jQuery(e).html()); if(pageNum <= 50000){ exportExcelDataFormSubmit(tableId); }else if(pageNum > 50000 && pageNum <=100000){ //在上班期间不能下载 if((day>=8 && day<12)||(day>=14&&day<18)){ alert('抱歉,数据量过大,请在非工作期间下载!'); return; }else{ exportExcelDataFormSubmit(tableId); } }else{ alert('数据量过大,请过滤后下下载!'); return; } } }); } function exportExcelDataFormSubmit(tableId){ var table = getTracywindyTable(tableId); var params = table.params; var titleSpan = document.getElementById(table.id + '_titleSpan'); var excelTitleName = "sheet"; if (titleSpan) { excelTitleName = titleSpan.innerText || titleSpan.textContent; // encodeURI(titleSpan.innerText||titleSpan.textContent); } var form = document.getElementById("id_exportExcelForm"); if (form) { document.body.removeChild(form); } form = document.createElement("form"); form.id = "id_exportExcelForm"; form.target = ""; //tableId+"_exportExcelFormIFrame"; var tempInnerHtml = ""; var complexHeaders = []; /*for(var i=0;i"; var columnsStr = JsonUtil.encode(table.columns).replace(/'/gi, '''); tempInnerHtml += ""; if ('local' == table.loadMode) { var datasStr = JsonUtil.encode(table.tableData).replace(/'/gi, '''); tempInnerHtml += ""; } params['excelTitleName'] = excelTitleName; for (var p in params) { var tempStr = params[p]; if (Object.prototype.toString.call(params[p]) == '[object String]') { tempStr = params[p].replace(/'/gi, '''); //.replace(/"/gi,'"'); } tempInnerHtml += ""; } tempInnerHtml += ""; tempInnerHtml += ""; tempInnerHtml += ""; tempInnerHtml += ""; tempInnerHtml += ""; tempInnerHtml += ""; with(form) { var exportExcelUrl = ""; if (table.exportExcelUrl.indexOf("?") > -1) { exportExcelUrl = table.exportExcelUrl + "&decorate=no&randomNumber=" + Math.random(); } else { exportExcelUrl = table.exportExcelUrl + "?decorate=no&randomNumber=" + Math.random(); } action = exportExcelUrl; method = "post"; style.display = "none"; innerHTML = tempInnerHtml; } document.body.appendChild(form); form.submit(); } //导入excel function function importExcelData(tableId, url, columns) { var table = getTracywindyObject(tableId); var tempurl = url || '/table/importExcel.action'; var tempcolumns = columns || table.columns; if (!window.currentImportExcelLoadMask) { window.currentImportExcelLoadMask = new tracywindyLoadMask(document.body, "文件上传中 请稍等..."); } if (!document.getElementById("id_importExcelFormWindow")) { var uploadAttachmentFileWindow_html = ""; uploadAttachmentFileWindow_html += ''; jQuery(document.body).append(uploadAttachmentFileWindow_html); jQuery("#" + tableId + "ImportExcelFormSubmitButton").click(function(e) { //alert(tempurl); importExcelFormSubmit(getRootPath() + tempurl); }); jQuery("#" + tableId + "ImportExcelFormCancelButton").click(function(e) { jQuery("#id_importExcelFormWindow").window("close"); }); } var columnsStr = JsonUtil.encode(tempcolumns); //.replace(/'/gi,'''); document.getElementById("id_importExcelColumnStr").value = columnsStr; jQuery("#id_importExcelFormWindow").show(); jQuery("#id_importExcelFormWindow").window({ top: 200 }); jQuery("#id_importExcelFormWindow").window("open"); } function importExcelFormSubmit(url) { window.currentImportExcelLoadMask.show(); var importExcelForm = document.getElementById("id_importExcelForm"); with(importExcelForm) { action = url; submit(); } try { jQuery("#id_importExcelFormWindow").window("close"); } catch(e) {} return false; } function importExcelFormCallBack(result, currentTableId) { var table = getTracywindyObject(currentTableId); table.tableData = JsonUtil.decode(result); createDataTable(table); window.currentImportExcelLoadMask.hide(); } //showRank Check var tracywindyTable = function(config) { //判断是够创建过 if(config.id){ if(getTracywindyObject(config.id)){ return; } } //js中本table对象的id this.id = config.id || GenerateGuid(); //附件上传联合主键 this.unionKey = config.unionKey; this.checkedKey = config.checkedKey; this.checkAttachmentInfoFuncCallback = config.checkAttachmentInfoFuncCallback; //表配置 this.tableConfig = config; //根据行号或者列数据实现对行颜色的调控,回掉方法 this.rowColorCallback = config.rowColorCallback || function(index, rowData) { return ""; }; //select数据是否在页面初始化时即加载数据 this.lazyLoad = config.lazyLoad || false; // if (window.isPagePrint) { this.isPagePrint = true; } //判断客户端类型是否是mobile this.isMobile = (SysBrowser.android || SysBrowser.iPhone /*|| SysBrowser.iPad*/); this.isPad = SysBrowser.iPad; //对象类型 this.objectType = 'table'; //表格数据来源sql语句所在的xml文件名称 this.xmlFileName = config.xmlFileName || ''; //需要导出excel数据的行索引 this.forceExportExcelIndexs = config.forceExportExcelIndexs || ""; //列模式 this.cm = config.columnModel || {}; //参数列表,通过sql查询数据时需要的sql参数 this.params = config.params || {}; this.params['pageLocationHref'] = window.location.href; if(config.beforeTableParamsLoadServiceName){ this.params['beforeTableParamsLoadServiceName'] = config.beforeTableParamsLoadServiceName; } //列是否自动填满窗口,均分窗口宽度,默认不均分,超过后显示横项滚动条 this.isFit = config.isFit || false; this.isShortPage = config.isShortPage || false; if(this.isMobile||this.isPad){ this.isShortPage = true; } this.columns = config.columns || []; //列模型 this.remainColumns = config.remainColumns || false; if (this.columns.length > 0) { this.remainColumns = true; } //是否显示边框 this.border = config.border || false; this.isExportTitle = config.isExportTitle; //值为空时显示的默认值 this.emptyChar = ("undefined" == typeof(config.emptyChar)) ? ".  ": config.emptyChar; //影响标题栏 this.complexHeadersCallBack =config.complexHeadersCallBack||function(){}; this.complexHeaders = config.complexHeaders || []; this.columnAddWidth = config.columnAddWidth || (this.complexHeaders.length > 0 ? -3 : 0); this.lockedComplexHeaders = config.lockedComplexHeaders || []; this.exportComplexHeaders = config.exportComplexHeaders || []; this.fitColumnSizeAdd = config.fitColumnSizeAdd || -10; this.complexHeadersAddHeight = config.complexHeadersAddHeight || 0; this.toolsLeftMargin = config.toolsLeftMargin || 20; this.toolsAdd = config.toolsAdd || 1; this.forceUseColumn = config.forceUseColumn || false; this.isCustomTools = config.isCustomTools || false; this.queryArea = config.queryArea; //是否隐藏字段值当字段长度超过列长度是true:不隐藏,false:隐藏 this.isAutoBreakContent = config.isAutoBreakContent || false; this.statisticColumnNames = config.statisticColumnNames || []; this.params['summaryFields'] = this.statisticColumnNames.join(","); this.precise = config.precise || 2; this.skipRowCount = config.skipRowCount || 0; //导出excel时的版本 this.exportExcelVersion = config.exportExcelVersion || "2007"; //锁定列数据,滚动时列保持不动 this.lockedNames = config.lockedNames || []; this.isReport = config.isReport || false; this.needLoadMask = ((config.needLoadMask == false) ? false: true); if (this.id) { tracywindy_tables[this.id] = this; tracywindyObject[this.id] = this; } //表格显示在哪个页面对象中 this.renderTo = config.renderTo; this.displayToggleContainer = config.displayToggleContainer; var clientTableCalWidth = (Math.max(document.documentElement.clientWidth, (document.body || document.documentElement).clientWidth)); this.width = (config.width) || (clientTableCalWidth - 2); this.width-=2; if ((this.width + "").indexOf("%") > -1) { this.width = clientTableCalWidth * (parseFloat((this.width + "").replace(/\s/gi, "")) / 100 - 2); } this.height = config.height ; //是否高度自适应 this.isAutoHeight = config.isAutoHeight || false; this.isAutoHeight = (!this.height) || this.isAutoHeight; this.showHeader = ((config.showHeader == false) ? false: true); this.datas = config.datas || []; this.tools = config.tools || []; if ((window.isViewHistoryTask && !config.isForceTools) || this.isPagePrint ) { this.tools = []; } this.tableData = this.datas; this.title = (config.title || ""); //this.isExcel = (config.isExcel == false )?false:true; this.isExcel = config.isExcel || false; this.callBack = config.callBack; //分页 this.basicInfo = config.basicInfo || { datas: 'datas', total: 'total' }; this.isPage = config.isPage || false; this.isRank = config.isRank || false; this.isCheck = config.isCheck || false; if (this.isPagePrint) { this.isCheck = false; } this.onCheckedCallback = config.onCheckedCallback; this.isStatistic = config.isStatistic || false; this.checkOnly = config.checkOnly || false; this.checkType = (("radio" != config.checkType) ? "checkbox": "radio"); //"radio","checkbox" this.pageSize = config.pageSize || 20; if (!this.isPage) { this.pageSize = 99999999; } //本地分页loadmode='local' this.total = config.total || config.total; this.start = config.start || 0; this.rankSize = config.rankSize || 20; this.checkSize = config.checkSize || 24; this.url = config.url || (getRootPath() + '/table/getTableData.action'); this.exportExcelUrl = config.exportExcelUrl || (getRootPath() + '/table/getExcelExportData.action'); this.completeCallBack = config.completeCallBack; this.jsonData = {}; //加载数据方式 this.loadMode = config.loadMode || 'ajax'; this.isColumnResizable = (false == config.isColumnResizable) ? false: true; this.resizableAddSize = config.resizableAddSize || 0; this.isRemoteSortable = ((false == config.isRemoteSortable) || ('ajax' != this.loadMode)) ? false: true; //判断是否是锁定 this.isNeedLocked = (this.lockedNames.length > 0) ;//|| this.isRank || this.isCheck; this.showQueryAreaOnDocumentReady = (config.showQueryAreaOnDocumentReady==false)?false:true; //创建table this.createTableDetail(); }; /******创建查询区域(开始)*************************************/ //同步高度 tracywindyTable.prototype.synchronizedHeight = function(){ var $me = this; var oldDisplay = ""; if ($me.displayToggleContainerObj) { oldDisplay = $me.displayToggleContainerObj.style.display; $me.displayToggleContainerObj.style.display = "block"; } if($me.lockedTable){ var lockedWidth = $me.lockedTableDiv.clientWidth; if(this.showHeader){ lockedWidth = $me.lockedTableHeaderDiv.clientWidth; } if($me.span){ $me.tableHeaderDiv.style.width = ($me.width-lockedWidth-16)+"px"; }else{ $me.tableHeaderDiv.style.width = ($me.width-lockedWidth+1)+"px"; } //$me.tableHeaderDiv.style.width = ($me.width-lockedWidth+1)+"px"; $me.tableDiv.style.width = ($me.width-lockedWidth+1)+"px"; }else{ if($me.span){ $me.tableHeaderDiv.style.width = ($me.width-15)+"px"; }else{ $me.tableHeaderDiv.style.width = ($me.width+1)+"px"; } $me.tableDiv.style.width = ($me.width+2)+"px"; } var clientWidth = $me.tableDiv.clientWidth; if($me.showHeader){ clientWidth = $me.tableHeaderDiv.clientWidth; } var scrollWidth = $me.tableDiv.scrollWidth; if($me.showHeader){ scrollWidth = $me.tableHeaderDiv.scrollWidth; } // modify by tracywindy revise the last row was covered by the container's scollbar if($me.isAutoHeight && (clientWidth < scrollWidth) && ("IE" == SysBrowser.getBrowser()) ){ var realHeight = Math.max($me.tempDatas.length * 24, $me.table.offsetHeight); $me.tableDiv.style.height = (realHeight+18)+"px"; } var clientHeight = $me.tableDiv.clientHeight; if ($me.displayToggleContainerObj) { $me.displayToggleContainerObj.style.display = oldDisplay; } if($me.lockedTable){ $me.lockedTableDiv.style.height = (clientHeight)+"px"; /*if(scrollWidth == clientWidth){ try{ if(!$me.lockedTableDiv.oldHeight){ $me.lockedTableDiv.oldHeight = parseInt($me.lockedTableDiv.style.height); } $me.lockedTableDiv.style.height = (parseInt($me.lockedTableDiv.style.height)+16)+"px"; }catch(e){} }*/ } }; tracywindyTable.prototype.initQueryAreaContainer = function() { this.queryAreaDiv = document.createElement("div"); this.queryAreaDiv.className = "x-panel-table-div-query-area"; this.queryAreaDiv.id = this.id + "_queryAreaDivContainer"; this.mainDiv.appendChild(this.queryAreaDiv); this.queryAreaDiv.innerHTML = this.queryArea || ""; }; tracywindyTable.prototype.createQueryArea = function() { this.queryAreacomboboxConfigArray = []; var tableConfig = this.tableConfig; var columns = this.columns; this.queryArea = this.queryArea || ""; var queryAreaTableTbody = null; var queryAreaTableTbodyTr = null; if (this.queryArea) { this.initQueryAreaContainer(); } var isInitQueryArea = false; for (var i = 0; i < columns.length; i++) { var columnConfig = columns[i]; var isHidden = columnConfig.hidden || false; if (typeof isHidden == "string") { if (isHidden.toLowerCase == "true") { isHidden = false; } else if (isHidden.toLowerCase == "false") { isHidden = false; } } isHidden = false; var columnQueryConfig = columnConfig.queryConfig; if (!isHidden && columnQueryConfig) { if (!isInitQueryArea) { if (!this.queryAreaDiv) { this.initQueryAreaContainer(); } this.queryAreaTableDivContainer = document.createElement("div"); this.queryAreaTableDivContainer.className = "x-panel-table-div-query-area-auto-config"; this.queryAreaDiv.appendChild(this.queryAreaTableDivContainer); var queryAreaTable = document.createElement("table"); this.queryAreaTable = queryAreaTable; this.queryAreaTableDivContainer.appendChild(this.queryAreaTable); queryAreaTableTbody = document.createElement("tbody"); queryAreaTable.appendChild(queryAreaTableTbody); queryAreaTableTbodyTr = document.createElement("tr"); queryAreaTableTbody.appendChild(queryAreaTableTbodyTr); isInitQueryArea = true; } if (columnQueryConfig.isNewLine) { queryAreaTableTbodyTr = document.createElement("tr"); queryAreaTableTbody.appendChild(queryAreaTableTbodyTr); } var rowSpan = columnQueryConfig.rowSpan || 1; var colSpan = columnQueryConfig.colSpan || 1; var queryAreaTableTbodyTdLabel = document.createElement("td"); queryAreaTableTbodyTdLabel.style.borderRight = "1px solid transparent"; queryAreaTableTbodyTr.appendChild(queryAreaTableTbodyTdLabel); queryAreaTableTbodyTdLabel.rowSpan = rowSpan; var queryAreaTableTbodyTdValue = document.createElement("td"); queryAreaTableTbodyTdValue.rowSpan = rowSpan; queryAreaTableTbodyTdValue.colSpan = colSpan; queryAreaTableTbodyTr.appendChild(queryAreaTableTbodyTdValue); var labelContent = (columnConfig['header'] || columnConfig['name']) + ":"; queryAreaTableTbodyTdLabel.innerHTML = labelContent; var valueContent = ''; var dataType = columnConfig['type'] || 'text'; var inputName = this.id + "_queryArea_" + (columnConfig['mapping'] || columnConfig['name']); var otherAttributes = columnConfig['otherAttributes']; if (!otherAttributes) { otherAttributes = ""; } var otherClasses = " td-content-readonly "; //this.queryAreacomboboxConfigArray = []; switch (dataType.toLowerCase()) { case "text": { valueContent = ''; break; } case "textarea": { valueContent = ''; break; } case "number": { otherAttributes += ' dataType="Number" '; valueContent = ''; if (columnConfig['isRange']) { valueContent = ''; valueContent += ' 到 '; } break; } case "double": { otherAttributes += ' dataType="Double" '; valueContent = ''; if (columnConfig['isRange']) { valueContent = ''; valueContent += ' 到 '; } break; } case "date": { var dateFormat = columnConfig['dateFormat'] || 'yyyy-MM-dd'; valueContent = ''; if (columnConfig['isRange']) { valueContent = '
'; valueContent += ' - '; } break; } case "combobox": { var comboboxDivContianerId = this.id + '_queryArea_id_combo_' + inputName + '_container'; columnQueryConfig['renderTo'] = comboboxDivContianerId; columnQueryConfig['name'] = inputName; columnQueryConfig['width'] = 100; //模拟下拉框 valueContent += '
'; this.queryAreacomboboxConfigArray.push(columnQueryConfig); } } queryAreaTableTbodyTdValue.innerHTML = valueContent; } } this.queryAreaComboboxs = []; for (var i = 0; i < this.queryAreacomboboxConfigArray.length; i++) { var combo_select = new tracywindyComboBox(this.queryAreacomboboxConfigArray[i]); this.queryAreaComboboxs.push(combo_select); } if (this.queryAreaDiv) { //加载comobo this.queryAreaDivHeight = this.queryAreaDiv.offsetHeight; this.queryAreaDiv.style.display = "none"; if (!this.titleDiv) { alert("请先指定" + this.id + '的Title标题'); return; } if(this.showQueryAreaOnDocumentReady == true){ $(this.queryAreaDiv).show(); } this.titleDiv.innerHTML += "
"; } if (isInitQueryArea) { if (tableConfig.isNewLineQueryButton) { queryAreaTableTbodyTr = document.createElement("tr"); queryAreaTableTbody.appendChild(queryAreaTableTbodyTr); } var queryButtonTd = document.createElement("td"); queryButtonTd.colSpan = tableConfig.queryButtonColSpan || 2; queryAreaTableTbodyTr.appendChild(queryButtonTd); var tempHtml = ""; tempHtml += '查询'; tempHtml += '清空'; queryButtonTd.innerHTML = tempHtml; var queryAreaTableRows = this.queryAreaTable.rows; for (var i = 0; i < queryAreaTableRows.length; i++) { var bgClass = "x-panel-table-data-row-"; if ((i + 1) % 2 == 0) { bgClass += "even"; } else { bgClass += "odd"; } queryAreaTableRows[i].className = bgClass; } } }; /*****创建查询区域(结束)*************************************/ /*****数据加载方法(开始)*************************************/ tracywindyTable.prototype.setTools = function(newTools) { this.tools = newTools || []; this.createTableDetail(); }; //设置锁定lie tracywindyTable.prototype.setLockedNames = function(lockedNames) { this.lockedNames = lockedNames; this.isNeedLocked = (this.lockedNames.length > 0) ;//|| this.isRank || this.isCheck; this.height = this.tableConfig.height; if (this.tableConfig.height && (this.isNeedLocked) && !this.isFit) { this.height = (this.tableConfig.height - 16); } //this.mainDiv.style.height = this.height + "px"; try { this.mainDiv.removeChild(this.lockedTableHeaderDivContainer); } catch(e) {}; try { this.mainDiv.removeChild(this.lockedTableDivContainer); } catch(e) {}; this.mainDiv.removeChild(this.tableHeaderDivContainer); this.mainDiv.removeChild(this.tableDivContainer); this.createLockedTableContainer(); this.createNonLockedTableContainer(); this.loadMask.show(); this.reload(); }; tracywindyTable.prototype.createTableDetail = function() { this.isNeedLocked = (this.lockedNames.length > 0) ;//|| this.isRank || this.isCheck; if (this.tableConfig.height && (this.isNeedLocked) && !this.isFit) { this.height = (this.tableConfig.height - 16); } //创建div this.createTableObj(); if (this.loadMode == 'ajax') { //加载ajax table数据 this.loadAjaxTableData(); } else { if (this.isPage) { if (!this.total) { alert("本地页面分页需要指定total"); } } //加载本地数据 this.loadLocalTableData(); } }; //判断是否有数据 tracywindyTable.prototype.isExistData = function() { return ! isNoTableData; }; //加载本地数据 tracywindyTable.prototype.loadLocalTableData = function() { this.loadMask.show(); //创建分页 if (this.isPage) { createPage(this); } createDataTable(this); }; //重新设置table大小 tracywindyTable.prototype.setWidth = function(newWidth) { this.renderObj.removeChild(this.dom); this.span = null; this.width = newWidth - 2; //创建div this.createTableDetail(); }; tracywindyTable.prototype.setHeight = function(newHeight) { this.renderObj.removeChild(this.dom); this.span = null; this.height = newHeight; //创建div this.createTableDetail(); }; //加载ajax数据 tracywindyTable.prototype.loadAjaxTableData = function() { var $me = this; if ($me.lazyLoad) { $me.lazyLoad = false; $me.jsonData = { total: 0 }; //创建分页 if ($me.isPage) { createPage($me); } createDataTable($me); this.loadMask.hide(); return false; } if (this.needLoadMask) { this.loadMask.show(); } var params = this.params; var xmlFileName = this.xmlFileName; params['xmlFileName'] = xmlFileName; params['start'] = params['start'] || $me.start || 0; params['pageSize'] = this.pageSize || 20; if (this.isReport && jQuery.ajax) { jQuery.ajax({ url: getTracywindyRandomUrl(this.url), data: params, type: 'POST', dataType: 'JSON', success: function(data) { if (data.code == "") { $me.jsonData = data; $me.parseTableData(); } else { alert(data.code); } }, error: function(res) { alert("Server Unavailable"); } }); } else { ajaxRequest({ url: this.url, success: function(res) { try{ $me.jsonData = eval('(' + res.responseText + ')'); }catch(e){ document.body.innerText= e+">>:"+res.responseText ; } $me.parseTableData(); }, failure: function(res) {}, params: params }); } }; tracywindyTable.prototype.parseTableData = function() { var $me = this; $me.tableData = $me.jsonData[$me.basicInfo.datas]; //替换换行符 for (var k = 0; k < $me.tableData.length; k++) { for (var key in $me.tableData[k]) { if (typeof $me.tableData[k][key] == 'string') { //替换换行符 $me.tableData[k][key] = $me.tableData[k][key].replace(/\\\\n/gi, '\n'); } } } //创建数据区 if ($me.forceUseColumn) { var tempTableDataArr = []; for (var i = 0; i < $me.tableData.length; i++) { var tempRowData = {}; for (var ii = 0; ii < $me.columns.length; ii++) { if ($me.columns[ii]['col_mapping']) { tempRowData[$me.columns[ii].name] = $me.tableData[i][$me.columns[ii]['col_mapping'].toLowerCase()]; } else { tempRowData[$me.columns[ii].name] = ''; } } tempTableDataArr.push(tempRowData); } $me.tableData = tempTableDataArr; } //创建分页 if ($me.isPage) { createPage($me); } createDataTable($me); }; //创建数据区 tracywindyTable.prototype.AddRow = function(rowData) { this.tableData.push(rowData); createDataTable(this); return rowData; }; tracywindyTable.prototype.AddRows = function(rowDatas) { if (rowDatas instanceof Array) { for (var index = 0; index < rowDatas.length; index++) { this.tableData.push(rowDatas[index]); } } else { this.tableData.push(rowDatas); } createDataTable(this); return rowDatas; }; tracywindyTable.prototype.addRow = function(rowData) { this.tableData.push(rowData); createDataTable(this); return rowData; }; tracywindyTable.prototype.addRows = function(rowDatas) { if (rowDatas instanceof Array) { for (var index = 0; index < rowDatas.length; index++) { this.tableData.push(rowDatas[index]); } } else { this.tableData.push(rowDatas); } createDataTable(this); return rowDatas; }; tracywindyTable.prototype.setTitle = function(html) { document.getElementById(this.id + "_titleSpan").innerHTML = html; }; //返回所有行json data 形如[{'value':'1'},{'value','2'}] tracywindyTable.prototype.getRowsData = function() { return this.tableData; }; tracywindyTable.prototype.getRowsJsonData = function() { var rowDatas = this.getRowsData(); return rowDatas; }; tracywindyTable.prototype.getRowDataAt = function(rowIndex) { return this.getRowsData()[rowIndex]; }; tracywindyTable.prototype.removeRowAt = function(index) { var rowData = this.tableData.splice(index, 1); createDataTable(this); return rowData; }; tracywindyTable.prototype.addRowAt = function(index, rowData) { this.tableData.splice(index, 0, rowData); createDataTable(this); return rowData; }; tracywindyTable.prototype.addRowsAt = function(index, rowDatas) { if (rowDatas instanceof Array) { for (var rindex = 0; rindex < rowDatas.length; rindex++) { this.tableData.splice(index++, 0, rowDatas[rindex]); } } else { this.tableData.splice(index, 0, rowDatas); } createDataTable(this); return rowDatas; }; tracywindyTable.prototype.setColumnConfig = function(config, columnIndexOrName) { var currentCofig = {}; if (typeof(columnIndexOrName) == 'string') { for (var index = 0; index < this.columns.length; index++) { if (this.columns[index].name == columnIndexOrName) { currentCofig = this.columns[index]; } } } else { currentCofig = this.columns[columnIndexOrName]; } if (currentCofig == null) { return; } for (var p in config) { currentCofig[p] = config[p]; } }; tracywindyTable.prototype.findColumnIndex = function(columnName) { var columnIndex = -1; for (var index = 0; index < this.columns.length; index++) { if (this.columns[index].name == columnName) { columnIndex = index; } } return columnIndex; }; tracywindyTable.prototype.setColumnHeader = function(newHeader, columnIndexOrName) { this.setColumnConfig({ header: newHeader }, columnIndexOrName); }; tracywindyTable.prototype.setColumnWidth = function(columnWidth, columnIndexOrName) { this.setColumnConfig({ width: columnWidth }, columnIndexOrName); }; tracywindyTable.prototype.setColumnHidden = function(newHidden, columnIndexOrName) { this.setColumnConfig({ hidden: newHidden }, columnIndexOrName); }; tracywindyTable.prototype.setColumnRenderer = function(newRenderer, columnIndexOrName) { this.setColumnConfig({ renderer: newRenderer }, columnIndexOrName); }; tracywindyTable.prototype.setColumnAlign = function(newAlign, columnIndexOrName) { this.setColumnConfig({ align: newAlign }, columnIndexOrName); }; tracywindyTable.prototype.setColumnHeaderAlign = function(newHeaderAlign, columnIndexOrName) { this.setColumnConfig({ headerAlign: newHeaderAlign }, columnIndexOrName); }; tracywindyTable.prototype.getCheckedRowDatas = function() { var rowDatas = new Array(); var allItems = document.getElementsByName(this.checkName); for (var i = 0; i < allItems.length; i++) { if (allItems[i].checked) { var rowData = allItems[i].rowData; rowData.rowIndex = i; rowDatas.push(rowData); } } return rowDatas; }; tracywindyTable.prototype.getSingleCheckedReferenceRowDataToModify = function() { var rowIndex = -1; var allItems = document.getElementsByName(this.checkName); for (var i = 0; i < allItems.length; i++) { if (allItems[i].checked) { rowIndex = i; } } if ( - 1 != rowIndex) { return this.tableData[rowIndex]; } else { return null; } }; tracywindyTable.prototype.deleteCheckedRows = function() { var rowsData = []; var allItems = document.getElementsByName(this.checkName); for (var i = 0; i < allItems.length; i++) { if (allItems[i].checked) { var rowData = this.tableData.splice(index, 1); rowsData.push(rowData); } } createDataTable(this); return rowsData; }; tracywindyTable.prototype.setParam = function(name, value) { this.params[name] = value; }; tracywindyTable.prototype.setParams = function(params) { for (var param in params) { this.params[param] = params[param]; } }; tracywindyTable.prototype.reconfigure = function(columns, datas) { this.columns = columns; if (datas) { this.datas = datas; } if (this.loadMode == 'ajax') { //加载ajax table数据 this.loadAjaxTableData(); } else { //加载本地数据 this.jsonData = {}; this.tableData = this.datas; this.loadLocalTableData(); } }; tracywindyTable.prototype.reload = function() { /*if(this.loadMode == 'ajax') { //加载ajax table数据 this.loadAjaxTableData(); } else { //加载本地数据 this.loadLocalTableData(); }*/ this.load(); }; tracywindyTable.prototype.load=function(loadSummary){ //this.params['start'] = '0'; 2014-07-16 徐工电话催收、财务到帐核销需要在功能结束后仍保留之前页数 by ToyBaby this.params['pageSize'] = this.pageSize||20; //modify by tracywindy 2013-10-23 //this.createTableDetail(); /**/ if(this.loadMode == 'ajax') { //加载ajax table数据 this.loadAjaxTableData(); } else { //加载本地数据 this.loadLocalTableData(); } }; /*****数据加载方法(结束)*************************************/ //------------------------------------------------------------- /*****创建容器对象(开始)*************************************/ tracywindyTable.prototype.createTableObj = function() { var currentObj = this.renderTo; //创建主div if (! (typeof(this.renderTo) == 'object')) { currentObj = document.getElementById(this.renderTo); } if (this.displayToggleContainer) { this.displayToggleContainerObj = this.displayToggleContainer; if (! (typeof(this.displayToggleContainer) == 'object')) { this.displayToggleContainerObj = document.getElementById(this.displayToggleContainer); } } this.renderObj = currentObj; if (!currentObj) { alert("tracywindyTable[id='" + this.id + "'],没有对应的html元素<" + this.renderTo + ">"); } currentObj.style.margin = "0px"; currentObj.style.padding = "0px"; currentObj.style.textIndent = "0px"; if (this.dom) { this.renderObj.removeChild(this.dom); } var name_exportExcelFormIFrame = this.id + "_exportExcelFormIFrame"; this.name_exportExcelFormIFrame = name_exportExcelFormIFrame; currentObj.innerHTML = ""; this.mainDiv = document.createElement("div"); //document.getElementById(this.renderTo); this.mainDiv.style.width = (this.width+2) + "px"; this.mainDivId = this.id + "_mainDivTableContainer"; this.mainDiv.id = this.mainDivId; if (!this.isPagePrint && !this.isAutoHeight) { //this.mainDiv.style.height = this.height + "px"; //modify by tracywindy 2013-08-16 17:06 this.mainDiv.style.height = this.tableConfig.height + "px"; } this.mainDiv.className = "x-panel-table-div"; if (!currentObj) alert(this.renderTo); currentObj.appendChild(this.mainDiv); //创建loadMask if (!this.loadMask) { var $me = this; var oldDisplay = ""; if ($me.displayToggleContainerObj) { oldDisplay = $me.displayToggleContainerObj.style.display; $me.displayToggleContainerObj.style.display = "block"; } this.loadMask = new tracywindyLoadMask(this.mainDiv, '数据加载中,请稍等...'); if ($me.displayToggleContainerObj) { $me.displayToggleContainerObj.style.display = oldDisplay; } } this.loadMask.show(); this.dom = this.mainDiv; if (this.border) { addClass(this.mainDiv, "x-panel-table-div-border"); if (!this.title) { this.mainDiv.style.borderTop = "1px solid #DDD"; } } //创建主标题 if (this.title) { this.titleDiv = document.createElement("div"); this.titleDiv.className = "x-panel-table-div-title"; var titleInnerHTML = " "; titleInnerHTML += "" + this.title + ""; this.mainDiv.appendChild(this.titleDiv); if (this.isExcel) { //titleInnerHTML += " 导出"; titleInnerHTML += "
"; } this.titleDiv.innerHTML = titleInnerHTML; this.titleDiv.style.width = (this.width ) + "px"; var isNoTitleBorder = null; if (window.parent) { isTitleBorder = !window.parent.document.getElementById("id_goPage"); } if (this.border) { this.titleDiv.style.borderTop = "0px solid #DDD"; this.titleDiv.style.borderLeft = "1px solid transparent"; this.titleDiv.style.borderRight = "1px solid transparent"; if (isTitleBorder) { addClass(this.mainDiv, "x-panel-table-div-border-single"); } } } this.createQueryArea(); this.toolbarDiv = document.createElement("div"); this.toolbarDiv.className = "x-panel-table-toolbar-div-container"; this.mainDiv.appendChild(this.toolbarDiv); if (!this.isPage && (0 == this.tools.length)) { this.toolbarDiv.style.display = "none"; } //创建tools 工具条div if (this.tools.length > 0) { this.toolsDiv = document.createElement("div"); this.toolsDiv.id = this.id + "_toolsDiv"; this.toolsDiv.className = "x-panel-table-tools-div"; this.toolsDiv.style.borderWidth = "0px"; this.toolsDiv.style.borderStyle = "solid"; this.toolsDiv.style.borderColor = "#FFFFFF"; if (!this.isPage) { try { this.toolsDiv.style.cssFloat = "none"; } catch(e) {} try { this.toolsDiv.style.styleFloat = "none"; } catch(e) {} } var attachmentToolDiv = document.createElement("div"); attachmentToolDiv.className = "x-panel-table-tools-attachment-div"; attachmentToolDiv.style.width = this.toolsLeftMargin + "px"; this.toolsDiv.appendChild(attachmentToolDiv); this.toolbarDiv.appendChild(this.toolsDiv); var toolsDivInnerTable = document.createElement("table"); toolsDivInnerTable.className = "x-panel-table-tools-inner-table"; this.toolsDiv.appendChild(toolsDivInnerTable); this.toolsDivInnerTable = toolsDivInnerTable; try { toolsDivInnerTable.style.cssFloat = "left"; toolsDivInnerTable.style.borderCollapse = "collapse"; toolsDivInnerTable.style.height = "30px"; } catch(e) {} try { toolsDivInnerTable.style.styleFloat = "left"; toolsDivInnerTable.style.borderCollapse = "collapse"; toolsDivInnerTable.style.height = "30px"; } catch(e) {} var toolsDivInnerTableBody = document.createElement("tbody"); toolsDivInnerTable.appendChild(toolsDivInnerTableBody); var toolsDivInnerTableBodyTR = document.createElement("tr"); toolsDivInnerTableBody.appendChild(toolsDivInnerTableBodyTR); //创建tools应用 for (var index = 0; index < this.tools.length; index++) { var toolsDivInnerTableBodyTR_TD = document.createElement("td"); toolsDivInnerTableBodyTR.appendChild(toolsDivInnerTableBodyTR_TD); var tool = this.tools[index]; if (typeof(tool) == 'object') { if (this.isCustomTools) { this.toolsDiv.innerHTML = tool.html; } else { var html = tool.html; var isHtml = tool.isHtml || false; if (isHtml) { var toolItem = document.createElement("span"); toolItem.innerHTML = html; toolsDivInnerTableBodyTR_TD.appendChild(toolItem); continue; } var toolItem = document.createElement("a"); toolItem.setAttribute("iconCls", tool.iconCls); toolItem.setAttribute("plain", 'true'); toolItem.setAttribute("remainToolsIndex", index); var handler = tool.handler || function() {}; var clickHandler = (function(html, handler, table) { return function(e) { handler(table); cancelBubble(e); }; })(html, handler, this); with(toolItem) { href = "javascript:void(0)"; innerHTML = html; onclick = clickHandler; } toolsDivInnerTableBodyTR_TD.appendChild(toolItem); var toolItemText = jQuery(toolItem).text(); toolItem.setAttribute("toolItemIdentifier", this.id + "_" + toolItemText); jQuery(toolItem).linkbutton(); } } else if (typeof(tool) == 'string') { //添加分隔符 var menuItemSeparator = document.createElement("a"); menuItemSeparator.className = "x-panel-table-tool-div-separator-image"; menuItemSeparator.innerHTML = " "; toolsDivInnerTableBodyTR_TD.appendChild(menuItemSeparator); } } } //创建分页 if (this.isPage) { this.pageDiv = document.createElement("div"); this.pageDiv.className = "x-panel-table-div-page"; if (this.tools.length == 0) { this.pageDiv.style.width = (this.width - 2) + "px"; this.pageDiv.style.textAlign = "right"; if (this.border) { this.pageDiv.style.width = (this.width - 1) + "px"; this.pageDiv.style.borderLeft = "0px"; try { this.pageDiv.style.cssFloat = "left"; } catch(e) {} try { this.pageDiv.style.styleFloat = "left"; } catch(e) {} } else { try { this.pageDiv.style.cssFloat = "none"; } catch(e) {} try { this.pageDiv.style.styleFloat = "none"; } catch(e) {} } } this.toolbarDiv.appendChild(this.pageDiv); } if (this.isPage && (this.tools.length > 0)) { this.toolsDiv.style.borderRight = "0px"; this.pageDiv.style.borderLeft = "0px"; if (this.title == "信用等级") { this.toolsDiv.style.display = "block"; } //this.pageDiv.style.width = (this.width-this.toolsAdd-this.toolsDiv.offsetWidth+1)+"px"; this.pageDiv.style.marginLeft = "-2px"; this.pageDiv.style.textAlign = "right"; } if (this.isPage && this.border) { this.pageDiv.style.borderRight = "1px solid transparent"; } else if ((this.tools.length > 0) && this.border) { this.toolsDiv.style.borderRight = "1px solid transparent"; } this.subHeight = 0; if (this.title) { this.subHeight += 40; } if (this.showHeader) { if (this.complexHeaders.length > 0) { /*this.subHeight+=30*this.complexHeaders.length;*/ var rowspan = this.complexHeaders.length; this.subHeight += (34 + rowspan * 26 + (rowspan * 2 - 1) + (rowspan - 2)); this.subHeight += this.complexHeadersAddHeight; } else { this.subHeight += 30; } } if (this.isPage || (this.tools.length > 0)) { this.subHeight += 40; } this.mainDataHeight = (this.height - this.subHeight); if (this.isNeedLocked) { this.createLockedTableContainer(); } this.createNonLockedTableContainer(); //modify by tracywindy 2014-07-13 start ,添加后台合计功能 if(this.isRemoteStatistic){ this.summaryDiv = document.createElement("div"); this.summaryDiv.className = "x-panel-table-div-summary"; this.mainDiv.appendChild(this.summaryDiv); } //modify by tracywindy 2014-07-13 end }; tracywindyTable.prototype.createLockedTableContainer = function() { //table 标题(复杂表头)区域容器,当出现滚动条的时候添加空白样式 this.lockedTableHeaderDivContainer = document.createElement("div"); this.lockedTableHeaderDivContainer.id = this.id + "_lockedHeaderDivContainer"; this.lockedTableHeaderDivContainer.className = 'x-panel-table-header-div-container'; if (this.complexHeaders.length > 0) { var rowspan = this.complexHeaders.length; this.lockedTableHeaderDivContainer.style.height = (34 + rowspan * 26 + (rowspan * 2 - 1) + (rowspan - 2)) + "px"; } this.mainDiv.appendChild(this.lockedTableHeaderDivContainer); //table 标题(复杂表头)区域容器,当出现滚动条的时候添加空白样式 this.tableHeaderDivContainer = document.createElement("div"); this.tableHeaderDivContainer.id = this.id + "_headerDivContainer"; this.tableHeaderDivContainer.className = 'x-panel-table-header-div-container'; if (this.complexHeaders.length > 0) { var rowspan = this.complexHeaders.length; this.tableHeaderDivContainer.style.height = (34 + rowspan * 26 + (rowspan * 2 - 1) + (rowspan - 2)) + "px"; //this.tableHeaderDivContainer.style.height = (30+30*this.complexHeaders.length)+"px"; } this.mainDiv.appendChild(this.tableHeaderDivContainer); var brDiv = document.createElement("div"); brDiv.className = "br-div"; this.mainDiv.appendChild(brDiv); //添加table 标题区域 this.lockedTableHeaderDiv = document.createElement("div"); this.lockedTableHeaderDiv.id = this.id + "_lockedHeaderDiv"; this.lockedTableHeaderDiv.className = "x-panel-table-header-div"; if (this.complexHeaders.length > 0) { var rowspan = this.complexHeaders.length; this.lockedTableHeaderDiv.style.height = (34 + rowspan * 26 + (rowspan * 2 - 1) + (rowspan - 2)) + "px"; //this.lockedTableHeaderDiv.style.height = (30+30*this.complexHeaders.length)+"px"; } this.lockedTableHeaderDivContainer.appendChild(this.lockedTableHeaderDiv); //创建table 数据div容器 this.lockedTableDivContainer = document.createElement("div"); this.lockedTableDivContainer.id = this.id + "_lockedTableDivCotainer"; this.lockedTableDivContainer.className = "x-panel-table-content-div-container"; this.mainDiv.appendChild(this.lockedTableDivContainer); this.lockedTableDiv = document.createElement("div"); this.lockedTableDiv.id = this.id + "_lockedTableDiv"; //this.lockedTableDiv.style.borderBottom="1px dotted #DDD"; this.lockedTableDiv.className = "x-panel-table-content-div"; if (this.border) { //this.tableDiv.style.width = (this.width-2) + "px"; //this.tableHeaderDivContainer.style.width =(this.width-2) + "px"; } this.lockedTableDivContainer.appendChild(this.lockedTableDiv); //创建table数据区域 this.lockedTable = document.createElement("table"); this.lockedTable.className = "x-panel-table"; this.lockedTableDiv.appendChild(this.lockedTable); //table 区域实际高度 this.lockedTableHeaderDivContainer.style.display = "none"; this.lockedTableDiv.style.display = "none"; this.lockedTable.style.display = "none"; if (!this.isPagePrint && !this.isAutoHeight) { this.lockedTableDiv.style.height = (this.height - this.subHeight -1) + "px"; } }; tracywindyTable.prototype.createNonLockedTableContainer = function() { //table 标题(复杂表头)区域容器,当出现滚动条的时候添加空白样式 if (!this.isNeedLocked) { this.tableHeaderDivContainer = document.createElement("div"); this.tableHeaderDivContainer.id = this.id + "_headerDivContainer"; this.tableHeaderDivContainer.className = 'x-panel-table-header-div-container'; if (this.complexHeaders.length > 0) { //this.tableHeaderDivContainer.style.height = (30+30*this.complexHeaders.length)+"px"; var rowspan = this.complexHeaders.length; this.tableHeaderDivContainer.style.height = (34 + rowspan * 26 + (rowspan * 2 - 1) + (rowspan - 2)) + "px"; } this.mainDiv.appendChild(this.tableHeaderDivContainer); } //添加table 标题区域 this.tableHeaderDiv = document.createElement("div"); this.tableHeaderDiv.id = this.id + "_headerDiv"; this.tableHeaderDiv.className = "x-panel-table-header-div"; if (this.complexHeaders.length > 0) { var rowspan = this.complexHeaders.length; this.tableHeaderDiv.style.height = (34 + rowspan * 26 + (rowspan * 2 - 1) + (rowspan - 2)) + "px"; //this.tableHeaderDiv.style.height = (30+30*this.complexHeaders.length)+"px"; } this.tableHeaderDivContainer.appendChild(this.tableHeaderDiv); //创建table 数据div容器 this.tableDivContainer = document.createElement("div"); this.tableDivContainer.id = this.id + "_tableDivCotainer"; this.tableDivContainer.className = "x-panel-table-content-div-container"; this.mainDiv.appendChild(this.tableDivContainer); this.tableDiv = document.createElement("div"); this.tableDiv.id = this.id + "_tableDiv"; this.tableDiv.className = "x-panel-table-content-div"; if (this.border) { //this.tableDiv.style.width = (this.width-2) + "px"; //this.tableHeaderDivContainer.style.width =(this.width-2) + "px"; } this.tableDivContainer.appendChild(this.tableDiv); //创建table数据区域 this.table = document.createElement("table"); this.table.className = "x-panel-table"; this.tableDiv.appendChild(this.table); //table 区域实际高度 if (!this.isPagePrint && !this.isAutoHeight) { var curHeight = this.height - this.subHeight; if (this.isNeedLocked && !this.isFit) { curHeight += 16; } this.tableDiv.style.height = (curHeight) + "px"; } }; tracywindyTable.prototype.enabledToolsByText = function(toolsText, splitChar) { var toolsTextArr = toolsText.split(splitChar || ","); for (var i = 0; i < toolsTextArr.length; i++) { var $meItem = jQuery(this.toolsDivInnerTable).find(" tbody tr td a.l-btn[toolItemIdentifier=" + this.id + "_" + toolsTextArr[i] + "]"); if (!$meItem[0]) return; var $displayItem = $meItem.find("span.l-btn-left span.l-btn-text"); var $meItemText = $meItem.text(); var $meItemIconCls = $meItem.attr("iconCls"); var $meClickHandler = $meItem.attr("remainClickFunc"); var remainToolsIndex = $meItem.attr("remainToolsIndex"); var toolItem = this.tools[remainToolsIndex]; $meItem.removeClass("l-btn-plain-disabled"); $displayItem.removeClass($meItemIconCls); $displayItem.removeClass($meItemIconCls + "-disable"); $displayItem.addClass($meItemIconCls); var handler = toolItem.handler || function(table) {}; var html = toolItem.html; var clickHandler = (function(html, handler, table) { return function(e) { handler(table); cancelBubble(e); }; })(html, handler, this); $meItem[0].onclick = clickHandler; $displayItem.html(html); //$meItem.linkbutton('enable'); } }; tracywindyTable.prototype.disabledToolsByText = function(toolsText, splitChar) { var toolsTextArr = toolsText.split(splitChar || ","); for (var i = 0; i < toolsTextArr.length; i++) { var $meItem = jQuery(this.toolsDivInnerTable).find(" tbody tr td a.l-btn[toolItemIdentifier=" + this.id + "_" + toolsTextArr[i] + "]"); if (!$meItem[0]) return; var $displayItem = $meItem.find("span.l-btn-left span.l-btn-text"); var $meItemText = $meItem.text(); var $meItemIconCls = $meItem.attr("iconCls"); var $meClickHandler = $meItem.attr("remainClickFunc"); $meItem.addClass("l-btn-plain-disabled"); $displayItem.removeClass($meItemIconCls); $displayItem.removeClass($meItemIconCls + "-disable"); $displayItem.addClass($meItemIconCls + "-disable"); $meItem[0].onclick = null; $displayItem.html($meItemText); //$meItem.linkbutton('disable'); } }; tracywindyTable.prototype.getLastClickedRow = function() { if ((typeof(this.currentSelectedIndex) == 'undefined')) { alert("无选择项"); return; } return this.table.rows[this.currentSelectedIndex].dataObj; }; function doClickTableRow(e,$me, tr, rowIndex) { if ($me.onRowClicked) { $me.onRowClicked(e,$me, tr, rowIndex); } if ($me.isCheck && (!$me.checkOnly)) { var headerCheckBox = document.getElementById($me.checkName + '_header'); var target = getTarget(e); var checks = document.getElementsByName($me.checkName); for (var cIndex = 0; cIndex < checks.length; cIndex++) { if (checks[cIndex].rowIndex == rowIndex) { if($me.checkName != target.name){ checks[cIndex].checked = !checks[cIndex].checked; } /* if (headerCheckBox && checks[cIndex].checked) { headerCheckBox.checked = true; }*/ if (headerCheckBox) { var allCheckedCount = 0; var allItems = document.getElementsByName($me.checkName); for (var i = 0; i < allItems.length; i++) { if (allItems[i].checked) { allCheckedCount++; break; } } if (allCheckedCount > 0) { headerCheckBox.checked = true; }else{ headerCheckBox.checked = false; } } break; } } } $me.currentSelectedIndex = rowIndex; var rejectClassName = "x-panel-table-data-row-click"; changeTrCssStyle($me.table, $me.table.rows[rowIndex], rejectClassName); if ($me.lockedTable) { changeTrCssStyle($me.lockedTable, $me.lockedTable.rows[rowIndex], rejectClassName); } } function changeTrCssStyle(table, currentRow, rejectClassName) { for (var rowIndex = 0; rowIndex < table.rows.length; rowIndex++) { var row = table.rows[rowIndex]; removeClass(row, rejectClassName); } addClass(currentRow, rejectClassName); } function setDefaultTableColumnConfig(currentColumnConfig,$me) { var currentColumnToConfig = currentColumnConfig; var currentDataTypeToConfig = currentColumnToConfig['type']; if (("number" == currentDataTypeToConfig) || ("double" == currentDataTypeToConfig)) { currentColumnToConfig['align'] = 'right'; } if(currentColumnToConfig['width']){ if((currentColumnToConfig['width']+"").indexOf("%")>-1){ currentColumnToConfig['width'] = decimal(($me.width+2)*parseFloat(currentColumnToConfig['width'])/100,2); }else{ currentColumnToConfig['width'] = parseFloat(currentColumnToConfig['width']); } } return currentColumnToConfig; } function initDataTable($me) { //初始化数据开始 var jsonData = $me.jsonData; var datas = $me.tempDatas = []; for (var i = 0; i < $me.tableData.length; i++) { var newRowData = {}; for (var p in $me.tableData[i]) { //2013-4-18 孙传良 修改 如果是double类型的配置则格式化为2位小数 //原代码 //newRowData[p] = $me.tableData[i][p]; //修改开始 try { newRowData[p] = $me.tableData[i][p]; var val = parseFloat($me.tableData[i][p]); var type; for (var iik = 0; iik < $me.columns.length; iik++) { if (($me.columns[iik]['mapping'] || $me.columns[iik]['name']) == p) { if ("double" == $me.columns[iik]['type']) { if (String(val) == 'NaN') { newRowData[p] = $me.tableData[i][p]; } else { //newRowData[p] = (val.toFixed(2)); // modify by tracywindy 2013-10-14 newRowData[p] = forcePreciseDecimal(val, 2); } } else { newRowData[p] = $me.tableData[i][p]; } break; } } } catch(e) { newRowData[p] = $me.tableData[i][p]; } //修改结束 } datas.push(newRowData); } if ($me.isStatistic) { //初始化合计 var statisticRowData = {}; var statisticRowDataType = {}; for (var iik = 0; iik < $me.columns.length; iik++) { var currentColumnConfig = $me.columns[iik]; var name = currentColumnConfig['mapping'] || currentColumnConfig['name']; statisticRowData[name] = ' - '; if (jQuery.inArray(name, $me.statisticColumnNames) > -1) { statisticRowData[name] = '0'; statisticRowDataType[name] = currentColumnConfig['type']; } } datas.push(statisticRowData); var statisticColumnNames = $me.statisticColumnNames; var sumRowData = {}; for (var i = 0; i < $me.statisticColumnNames.length; i++) { sumRowData[$me.statisticColumnNames[i]] = 0; } if("local" == $me.loadMode){ //计算本地合计 for (var iir = 0; iir < (datas.length - 1); iir++) { var rowData = datas[iir]; for (var p in sumRowData) { sumRowData[p] += parseFloat(empty2Other(rowData[p], 0)); } } }else{ //后台远程合计 sumRowData = jsonData.sumRowData; } for (var p in sumRowData) { if ("double" == statisticRowDataType[p]) { statisticRowData[p] = (sumRowData[p].toFixed(2)); } else { statisticRowData[p] = decimal(sumRowData[p], $me.precise); } } } /*else { datas = $me.tableData; }*/ $me.tempDatas = datas; //header var columnIndex = 0; if (((!$me.forceUseColumn) && ($me.loadMode == 'ajax')) && !$me.remainColumns && (datas.length > 0)) { $me.columns = []; } var tableItemColumnLen = $me.columns.length; if ((tableItemColumnLen == 0)) { var headers = datas[0]; for (var p in headers) { if (("rowIndex" == p) || ("rn_column" == p)) { continue; } var currentColumnConfig = {}; currentColumnConfig['name'] = p; currentColumnConfig['mapping'] = p; currentColumnConfig['hidden'] = false; currentColumnConfig['header'] = p; currentColumnConfig['width'] = 100; currentColumnConfig['align'] = "left"; currentColumnConfig['headerAlign'] = "center"; currentColumnConfig['renderer'] = function(value, tableObj, columnName, columnIndex, rowData) { return value; }; if (!$me.columns[columnIndex]) { $me.columns[columnIndex] = {}; } var currentColumnToConfig = setDefaultTableColumnConfig($me.columns[columnIndex],$me); tracywindyApplyTo(currentColumnConfig, currentColumnToConfig); columnIndex++; } tableItemColumnLen = columnIndex; } else { if ($me.loadMode == 'ajax') { if ($me.forceUseColumn) { for (var iiii = 0; iiii < $me.columns.length; iiii++) { var currentColumnConfig = {}; currentColumnConfig['hidden'] = false; currentColumnConfig['mapping'] = $me.columns[iiii].name; currentColumnConfig['width'] = 100; currentColumnConfig['align'] = "left"; currentColumnConfig['headerAlign'] = "center"; currentColumnConfig['renderer'] = function(value, tableObj, columnName, columnIndex, rowData) { return value; }; var currentColumnToConfig = setDefaultTableColumnConfig($me.columns[iiii],$me); tracywindyApplyTo(currentColumnConfig, currentColumnToConfig); } } else { if ($me.remainColumns) { for (var iik = 0; iik < $me.columns.length; iik++) { var currentColumnConfig = {}; var currentConfig = $me.columns[iik]; currentColumnConfig['name'] = currentConfig['name']; currentColumnConfig['mapping'] = currentConfig['name']; currentColumnConfig['hidden'] = false; currentColumnConfig['header'] = currentConfig['name']; currentColumnConfig['width'] = 100; currentColumnConfig['align'] = "left"; currentColumnConfig['headerAlign'] = "center"; currentColumnConfig['renderer'] = function(value, tableObj, columnName, columnIndex, rowData) { return value; }; var currentColumnToConfig = setDefaultTableColumnConfig($me.columns[iik],$me); tracywindyApplyTo(currentColumnConfig, currentColumnToConfig); } } else { var headers = datas[0]; for (var p in headers) { if (("rowIndex" == p) || ("rn_column" == p)) { continue; } var currentColumnConfig = {}; currentColumnConfig['name'] = p; currentColumnConfig['mapping'] = p; currentColumnConfig['hidden'] = false; currentColumnConfig['header'] = p; currentColumnConfig['width'] = 100; currentColumnConfig['align'] = "left"; currentColumnConfig['headerAlign'] = "center"; currentColumnConfig['renderer'] = function(value, tableObj, columnName, columnIndex, rowData) { return value; }; if (!$me.columns[columnIndex]) { $me.columns[columnIndex] = {}; } var currentColumnToConfig = setDefaultTableColumnConfig($me.columns[columnIndex],$me); tracywindyApplyTo(currentColumnConfig, currentColumnToConfig); columnIndex++; } } } } else { for (var cIndex = 0; cIndex < tableItemColumnLen; cIndex++) { var obj = {}; obj['name'] = $me.columns[cIndex].name; obj['mapping'] = $me.columns[cIndex].name; obj['hidden'] = false; obj['header'] = $me.columns[cIndex].name; obj['width'] = 100; obj['align'] = "left"; obj['headerAlign'] = "center"; obj['renderer'] = function(value, tableObj, columnName, columnIndex, rowData) { return value; }; var currentColumnToConfig = setDefaultTableColumnConfig($me.columns[cIndex],$me); tracywindyApplyTo(obj, currentColumnToConfig); } } } columnIndex = 0; var isInvokeCallBack = true; if (($me.loadMode == 'ajax') && (typeof($me.jsonData.norecord) != 'undefined') && ($me.jsonData.norecord == 'true')) { isInvokeCallBack = false; } if ($me.callBack) { if (!isInvokeCallBack) { for (var cIndex = 0; cIndex < tableItemColumnLen; cIndex++) { if (!$me.columns[cIndex]['renderer']) { $me.columns[cIndex]['renderer'] = function(value, tableObj, columnName, columnIndex, rowData) { return value; }; } } } $me.callBack(); //回调函数 } var attachmentWidth = 0; if ($me.isRank) { attachmentWidth += $me.rankSize; } if ($me.isCheck) { attachmentWidth += ($me.checkSize+2); } $me.attachmentWidth = attachmentWidth; //查找特殊列 var firstDisplayColumnIndex = 0; var lastDisplayColumnIndex = 0; var isFindFirstDisplayColumn = false; for (var cc_Index = 0; cc_Index < tableItemColumnLen; cc_Index++) { var currentFoundColumn = $me.columns[cc_Index]; if (!currentFoundColumn.hidden) { if (!isFindFirstDisplayColumn) { firstDisplayColumnIndex = cc_Index; isFindFirstDisplayColumn = true; } lastDisplayColumnIndex = cc_Index; } } $me.firstDisplayColumnIndex = firstDisplayColumnIndex; $me.lastDisplayColumnIndex = lastDisplayColumnIndex; //是否自动填充,获取table的offsetHeight,此处为相似数值 if ($me.isFit) { var realSize = 0; var firstNotHiddenColumnIndex = -1; for (var a = 0; a < tableItemColumnLen; a++) { if (!$me.columns[a].hidden) {++realSize; if ( - 1 == firstNotHiddenColumnIndex) { firstNotHiddenColumnIndex = a; } } } realSize = ((realSize == 0) ? 1 : realSize); var realColumnSize = parseInt(($me.width - attachmentWidth) / realSize); var compareWidth = ($me.width - attachmentWidth) % realSize; for (var a = 0; a < tableItemColumnLen; a++) { $me.columns[a].width = realColumnSize - 3; //(realColumnSize/($me.width-attachmentWidth))*($me.width-attachmentWidth)-3; } //$me.columns[tableItemColumnLen-1].width = realColumnSize+compareWidth; //var remainWidth = ($me.width-attachmentWidth-30-(realColumnSize-4)*realSize ); var remainWidth = $me.fitColumnSizeAdd; //(realSize-2)*3; if (SysBrowser.getBrowser().toLowerCase().indexOf("safari") > -1) { remainWidth += 15; } $me.columns[firstNotHiddenColumnIndex].width = ($me.columns[firstNotHiddenColumnIndex].width + remainWidth); } var lockedColumns = []; var nonLockedColumns = []; $me.lockedColumns = lockedColumns; $me.nonLockedColumns = nonLockedColumns; if (0 == $me.lockedNames.length) { $me.lockedColumns = $me.nonLockedColumns = $me.columns; return; } for (var cIndex = 0; cIndex < tableItemColumnLen; cIndex++) { var isLocked = false; var currentColumn = $me.columns[cIndex]; for (var lockedIndex = 0; lockedIndex < $me.lockedNames.length; lockedIndex++) { if (currentColumn["name"] == $me.lockedNames[lockedIndex]) { lockedColumns.push(currentColumn); isLocked = true; break; } } if (!isLocked) { nonLockedColumns.push(currentColumn); } } //初始化数据完成 } function createAllDataTable($me, complexHeaders, tableHeaderDivContainer, tableHeaderDiv, tableDiv, table, flag) { //清除数据开始 tableHeaderDiv.innerHTML = ''; var tableHeader = document.createElement("table"); if ($me.isFit) { tableDiv.style.overflowX = "hidden"; } table.deleteTHead(); table.deleteTFoot(); for (var rowIndex = 0; rowIndex < table.rows.length; rowIndex++) { table.deleteRow(rowIndex); } for (var iNode = 0; iNode < table.childNodes.length; iNode++) { table.removeChild(table.childNodes[iNode]); } ///清除数据完成 var currentOperColumns = []; if ("locked" == flag) { currentOperColumns = $me.lockedColumns; } else if ("nonLocked" == flag) { currentOperColumns = $me.nonLockedColumns; } var tableItemColumnLen = currentOperColumns.length; //开始创建表格数据 { //创建复杂表头col var complexLen = complexHeaders.length; var isNeedAddStyle = false; var isNoLockednames = true; if ("locked" == flag) { isNoLockednames = (0 == $me.lockedNames.length); isNeedAddStyle = (complexLen == 0) && ($me.complexHeaders.length > 0); if (isNeedAddStyle) { if (!isNoLockednames) { alert("未指定锁定列的复杂表头配置项lockedComplexHeaders:['name'],会导致数据和样式错误"); } } } if (complexLen > 0) { //创建头部 /*for(var ccIndex = 0;ccIndex 0) { for (var complexIndex = 0; complexIndex < complexLen; complexIndex++) { isLockedInitWidthAdd = false; isNonLockedInitWidthAdd = false; /*if(complexHeaders[complexIndex].length==0){ continue; }*/ var table_header_complex_row = document.createElement("tr"); tbody_header.appendChild(table_header_complex_row); if (0 == complexIndex) { var fillBackgroundColor = "transparent"; if ($me.isRank && (("locked" == flag)||!$me.isNeedLocked)) { var th_rank = document.createElement("td"); th_rank.rowSpan = (complexLen + 1); //th_rank.style.width = ($me.rankSize) + "px" ; th_rank.className = "x-panel-table-rank"; th_rank.innerHTML = '
 
'; table_header_complex_row.appendChild(th_rank); } if ($me.isCheck && (("locked" == flag)||!$me.isNeedLocked)) { var th_check = document.createElement("td"); th_check.rowSpan = (complexLen + 1); th_check.className = "x-panel-table-header-check"; th_check.style.textIndent = "0px"; var input_check = document.createElement('input'); input_check.type = $me.checkType; input_check.id = $me.checkName + "_header"; input_check.onclick = function(e) { var allItems = document.getElementsByName($me.checkName); for (var i = 0; i < allItems.length; i++) { allItems[i].checked = this.checked; } cancelBubble(e); }; //th_check.appendChild(input_check); if ($me.checkType == "radio") { th_check.innerHTML = '
 
'; }else{ var checkDivContainer = document.createElement("div"); checkDivContainer.style.width = ($me.checkSize-1)+"px"; checkDivContainer.appendChild(input_check); th_check.appendChild(checkDivContainer); } table_header_complex_row.appendChild(th_check); } if (("locked" == flag) && (0 == $me.lockedNames.length)) break; } var complexHeaderRowData = complexHeaders[complexIndex]; var currentColumnRealIndex = 0; for (var complexColIndex = 0; complexColIndex < complexHeaderRowData.length; complexColIndex++) { var columnHeaderAlign = "center"; var rowspan = 1; var colspan = 1; var complexHeaderRowDataColumn = complexHeaderRowData[complexColIndex]; var columnHeader = nullToString(complexHeaderRowDataColumn.header); /*if(complexHeaderRowDataColumn.isFillEmpty){ columnHeader = " "; }*/ var tempColumnHeaderAlign = nullToString(complexHeaderRowDataColumn.headerAlign); var rowspanStr = nullToString(complexHeaderRowDataColumn.rowspan); var colspanStr = nullToString(complexHeaderRowDataColumn.colspan); var beforeCurrentColumnRealIndex = currentColumnRealIndex; if ("" != tempColumnHeaderAlign) { columnHeaderAlign = tempColumnHeaderAlign; } if ("" != rowspanStr) { rowspan = parseInt(rowspanStr); } if ("" != colspanStr) { colspan = parseInt(colspanStr); } currentColumnRealIndex += colspan; var realColumnThWidth = 0; for (var colConfigIndex = beforeCurrentColumnRealIndex; colConfigIndex < currentColumnRealIndex; colConfigIndex++) { var currentFoundColumn = currentOperColumns[colConfigIndex]; if (currentFoundColumn.hidden) { colspan--; continue; } realColumnThWidth += currentFoundColumn.width; if (beforeCurrentColumnRealIndex != colConfigIndex) { realColumnThWidth += 3; } } var th = document.createElement("td"); th.style.display = ""; th.rowSpan = rowspan; th.colSpan = colspan; th.style.borderLeft ="0px"; //th.style.width = realColumnThWidth +"px"; th.style.textAlign = columnHeaderAlign; var widthAdd = 0; if (!currentFoundColumn.hidden) { if ("locked" == flag) { if (!isLockedInitWidthAdd) { widthAdd = 0; isLockedInitWidthAdd = true; } } else if ("nonLocked" == flag) { if (!isNonLockedInitWidthAdd) { widthAdd = 0; isNonLockedInitWidthAdd = true; } } } th.innerHTML = '
' + columnHeader + '
'; if (complexColIndex == (complexHeaderRowData.length - 1)) { if ("locked" == flag) { th.style.borderRightColor = "transparent"; } } table_header_complex_row.appendChild(th); /*if(complexHeaderRowDataColumn.isFillEmpty){ th.style.borderColor="transparent"; }*/ if (rowspan > 1) { th.style.height = (rowspan * 26 + (rowspan * 2 - 1) + (rowspan - 2)) + "px"; } } } } //创建表格头部 isLockedInitWidthAdd = false; isNonLockedInitWidthAdd = false; var table_header_row = document.createElement("tr"); for (var ccIndex = 0; ccIndex < tableItemColumnLen; ccIndex++) { if ((0 == ccIndex) && (complexHeaders.length <= 0)) { if ($me.isRank && (("locked" == flag)||!$me.isNeedLocked)) { var th_rank = document.createElement("td"); th_rank.className = "x-panel-table-rank"; //th_rank.style.width = ($me.rankSize) + "px"; th_rank.innerHTML = '
 
'; table_header_row.appendChild(th_rank); if (isNeedAddStyle && isNoLockednames) { rowspan = $me.complexHeaders.length; th_rank.style.lineHeight = (29 + rowspan * 26 + (rowspan * 2 - 1) + (rowspan - 2)) + "px"; //(30+28*$me.complexHeaders.length)+"px"; } if (!$me.isCheck && isNoLockednames) { th_rank.style.borderRightColor = "transparent"; } } if ($me.isCheck && (("locked" == flag)||!$me.isNeedLocked)) { var th_check = document.createElement("td"); th_check.className = "x-panel-table-check"; var input_check = document.createElement('input'); input_check.type = $me.checkType; input_check.id = $me.checkName + "_header"; input_check.onclick = function(e) { var allItems = document.getElementsByName($me.checkName); for (var i = 0; i < allItems.length; i++) { allItems[i].checked = this.checked; } cancelBubble(e); }; if (isNeedAddStyle && isNoLockednames) { rowspan = $me.complexHeaders.length; th_check.style.lineHeight = (29 + rowspan * 26 + (rowspan * 2 - 1) + (rowspan - 2)) + "px"; //(30+28*$me.complexHeaders.length)+"px"; //th_check.style.lineHeight = (30+26*$me.complexHeaders.length)+"px"; } if (isNoLockednames && $me.isNeedLocked) { th_check.style.borderRightColor = "transparent"; } if ($me.checkType == "radio") { th_check.innerHTML ='
 
'; }else{ var checkDivContainer = document.createElement("div"); checkDivContainer.style.width = ($me.checkSize-1)+"px"; checkDivContainer.appendChild(input_check); th_check.appendChild(checkDivContainer); } table_header_row.appendChild(th_check); } if (("locked" == flag) && (0 == $me.lockedNames.length)) break; } var currentFoundColumn = currentOperColumns[ccIndex]; var th = document.createElement("td"); th.style.borderRight = '#b6cad2 1px dotted'; th.style.display = currentFoundColumn.hidden ? "none": ""; th.setAttribute("columnName",currentFoundColumn.name); //th.style.width = currentFoundColumn.width +"px"; th.style.textAlign = currentFoundColumn.headerAlign; th.columnConfig = currentFoundColumn; var widthAdd = 0; if (!currentFoundColumn.hidden) { if ("locked" == flag) { if (!isLockedInitWidthAdd) { widthAdd = 0; isLockedInitWidthAdd = true; } } else if ("nonLocked" == flag) { if (!isNonLockedInitWidthAdd) { widthAdd = 0; isNonLockedInitWidthAdd = true; } } } var sortDivHtml = ""; if ($me.SortField && ($me.SortField == currentFoundColumn.mapping)) { th.SortDir = $me.SortDir; sortDivHtml = ""; } th.innerHTML = "
" + currentFoundColumn.header + sortDivHtml + "
"; table_header_row.appendChild(th); if (ccIndex == $me.lastDisplayColumnIndex) { //th.style.borderRight = "transparent"; } if (ccIndex == (tableItemColumnLen - 1)) { if ("locked" == flag) { th.style.borderRightColor = "transparent"; } } } tbody_header.appendChild(table_header_row); tableHeader.appendChild(tbody_header); tableHeaderDiv.appendChild(tableHeader); } var hScroll = false; var vScroll = false; var totalTableWidth = 0; if (($me.lockedNames.length > 0) || ("nonLocked" == flag)) { for (var a = 0; a < tableItemColumnLen; a++) { var currentFoundColumn = currentOperColumns[a]; if (!currentFoundColumn.hidden) { totalTableWidth += parseInt(currentFoundColumn.width)+3; } } } if ("locked" == flag) { if ($me.isNeedLocked) { tableDiv.style.borderRight = "1px solid #DDD"; // tableDiv.style.background="1px solid #DDD"; tableHeaderDiv.style.borderRight = "1px solid #DDD"; } if (0 == totalTableWidth) { curWidth += 8; $me.attachmentWidth += 8; } var curWidth = (totalTableWidth + $me.attachmentWidth); tableHeaderDiv.style.width = curWidth + "px"; table.style.width = (curWidth - 1) + "px"; tableDiv.style.width = (curWidth) + "px"; tableDiv.style.background = "#F0F3F7"; tableDiv.style.overflow = "hidden"; $me.lockedTotalTableWidth = curWidth; } else if ("nonLocked" == flag) { if (!$me.lockedTotalTableWidth) { $me.lockedTotalTableWidth = 0; } var relativeWidth = Math.min(totalTableWidth, $me.width - $me.lockedTotalTableWidth - 2); relativeWidth = Math.min(relativeWidth + 2, $me.width - $me.lockedTotalTableWidth - 2); if ($me.isFit /*&& (!$me.isMobile)*/ ) { relativeWidth = ($me.width - $me.lockedTotalTableWidth - 2); } table.style.width = totalTableWidth + "px"; tableDiv.style.width =( relativeWidth+3 )+ "px"; tableHeader.style.width = totalTableWidth + "px"; tableHeaderDiv.style.width = ( relativeWidth + 2) + "px"; tableHeaderDiv.style.overflow = "hidden"; tableDiv.style.overflow = "auto"; hScroll = true; if ($me.isFit) { tableDiv.style.overflowX = "hidden"; hScroll = false; } $me.nonlockedTotalTableWidth = relativeWidth; } $me.isInitHeight = false; //滚动条控制 if ("nonLocked" == flag) { tableHeaderDiv.scrollLeft = tableDiv.scrollLeft = 0; try { $me.lockedTableDiv.scrollTop = tableDiv.scrollTop = 0; } catch(e) {} tableDiv.onscroll = function() { tableHeaderDiv.scrollLeft = tableDiv.scrollLeft; try { $me.lockedTableDiv.scrollTop = tableDiv.scrollTop; } catch(e) {} }; } if ($me.showHeader) { tableHeaderDivContainer.style.display = ""; } else { tableHeaderDivContainer.style.display = "none"; } //tbody var table_body = document.createElement("tbody"); table.appendChild(table_body); for (var iNode = 0; iNode < table.childNodes.length; iNode++) { if (table.childNodes[iNode].tagName == 'TBODY') { table_body = table.childNodes[iNode]; } } $me.isNoTableData = false; if (!$me.isPagePrint && !$me.isAutoHeight && ("nonLocked" == flag)) { tableDiv.style.overflowY = "auto"; } else { tableDiv.style.overflowY = "hidden"; } /* //记载数据成功后回调函数 if ($me.completeCallBack && ("nonLocked" == flag)) { $me.completeCallBack(); }*/ if (($me.tableData.length == 0) || (($me.loadMode == 'ajax') && (typeof($me.jsonData.norecord) != 'undefined') && ($me.jsonData.norecord == 'true'))) { if (("nonLocked" == flag) && $me.span) { try { tableHeaderDivContainer.removeChild($me.span); } catch(e) {} $me.span = null; } var table_body_row = document.createElement("tr"); var td = document.createElement("td"); td.style.borderRight = "0px"; table_body_row.style.border = "0px"; table_body_row.style.textAlign = 'center'; td.colSpan = tableItemColumnLen; td.style.border = "0px"; if ($me.isPagePrint || $me.isAutoHeight) { td.style.height = "35px"; } else { td.style.height = ($me.mainDataHeight - 4) + "px"; } var oldDisplay = ""; if ($me.displayToggleContainerObj) { oldDisplay = $me.displayToggleContainerObj.style.display; $me.displayToggleContainerObj.style.display = "block"; } td.style.width = (tableHeader.offsetWidth) + "px"; if ($me.displayToggleContainerObj) { $me.displayToggleContainerObj.style.display = oldDisplay; } tableDiv.style.overflowY = "hidden"; if ("locked" == flag) { tableDiv.style.borderRight = "0px solid #DDD"; tableHeaderDiv.style.borderRight = "0px solid #DDD"; td.innerHTML = "
"; } else { td.innerHTML = "
无数据
"; } tableDiv.style.background = "#FFFFFF"; td.className = "no-data-td"; td.style.fontSize = "30px"; table_body_row.appendChild(td); table_body.appendChild(table_body_row); table.appendChild(table_body); $me.isNoTableData = true; $me.loadMask.hide(); $me.jsonData.norecord = 'false'; $me.tableData = this.datas = []; /*if ($me.completeCallBack) { $me.completeCallBack(); }*/ if ($me.isPagePrint) { jQuery("table.x-panel-table-header tbody tr td>div").css("color", "#000000"); jQuery("table.x-panel-table-header").css("borderColor", "transparent"); jQuery("table.x-panel-table-header tbody tr>td").css("background", "#DDD"); jQuery("table.x-panel-table-header tbody tr>td").css("borderColor", "silver"); } $me.synchronizedHeight(); return true; } /*else { if($me.completeCallBack) { $me.completeCallBack(); } }*/ var tempDatasLen = $me.tempDatas.length; for (var index = 0; index < tempDatasLen; index++) { var data = $me.tempDatas[index]; var realTableRowData = null; if (index < $me.tableData.length) { realTableRowData = $me.tableData[index]; } else { realTableRowData = data; } realTableRowData.rowIndex = index; var table_body_row = document.createElement("tr"); table_body.appendChild(table_body_row); table_body_row.dataObj = data; table_body_row.dataObj['rowIndex'] = index; var bgClass = "x-panel-table-data-row-"; if ((index + 1) % 2 == 0) { bgClass += "even"; } else { bgClass += "odd"; } table_body_row.className = bgClass; var rowColor = $me.rowColorCallback(index, data); if (rowColor) { table_body_row.style.backgroundColor = rowColor; } //注册行事件 var clickHandler = (function($me, tr, rowIndex) { return function(e) { doClickTableRow(e,$me, tr, rowIndex); }; })($me, table_body_row, index); var mouseOverFunc = (function(row, rowIndex) { return function() { var attachClass = "x-panel-table-data-row-mouseover"; addClass($me.table.rows[rowIndex], attachClass); if ($me.lockedTable) { addClass($me.lockedTable.rows[rowIndex], attachClass); } }; })(table_body_row, index); var mouseOutFunc = (function(row, rowIndex) { return function() { var attachClass = "x-panel-table-data-row-mouseover"; removeClass($me.table.rows[rowIndex], attachClass); if ($me.lockedTable) { removeClass($me.lockedTable.rows[rowIndex], attachClass); } }; })(table_body_row, index); table_body_row.onclick = clickHandler; var dblclickHandler = (function(table,rowData){ return function(e){ cancelBubble(e); popupReadOnlyWindow($me,rowData); }; })($me,data); table_body_row.ondblclick = dblclickHandler; table_body_row.onmouseover = mouseOverFunc; table_body_row.onmouseout = mouseOutFunc; columnIndex = 0; for (var ccIndex = 0; ccIndex < tableItemColumnLen; ccIndex++) { if (0 == ccIndex) { if ($me.isRank && (("locked" == flag)||!$me.isNeedLocked)) { var td_rank = document.createElement("td"); // td_rank.style.width = ($me.rankSize) + "px"; td_rank.className = "x-panel-table-rank"; td_rank.innerHTML = "
" + (index + 1) + '
'; if (index == 0) { //td_rank.style.borderTop="1px dotted #CAD9EA"; td_rank.style.borderTop = "1px dotted transparent"; } table_body_row.appendChild(td_rank); if ($me.isStatistic && ($me.tempDatas.length == (index + 1))) { td_rank.innerHTML = "
合计
"; if ($me.isCheck) td_rank.colSpan = 2; } } if ($me.isCheck && (("locked" == flag)||!$me.isNeedLocked)) { if ($me.isStatistic && ($me.tempDatas.length == (index + 1))) { if(!$me.isRank){ var td_check = document.createElement("td"); td_check.className = "x-panel-table-check"; td_check.innerHTML = "-"; table_body_row.appendChild(td_check); } } else { var td_check = document.createElement("td"); table_body_row.appendChild(td_check); td_check.style.textIndent = "0px"; td_check.className = "x-panel-table-check"; var tempId = GenerateGuid(); td_check.innerHTML = ('
'); var input_check = document.getElementById(tempId); //input_check.type = $me.checkType; input_check.rowData = realTableRowData; input_check.rowIndex = index; if (index == 0) { //td_check.style.borderTop="1px dotted #CAD9EA"; td_check.style.borderTop = "1px dotted transparent"; } //input_check.name=$me.checkName;ie下getElementsByName不能成功 ,ie不能动态修改name ; input_check.onclick = function(e) { if ($me.checkType == "radio") { return true; } var allCheckedCount = 0; var allItems = document.getElementsByName($me.checkName); for (var i = 0; i < allItems.length; i++) { if (allItems[i].checked) { allCheckedCount++; break; } } var headerCheckBox = document.getElementById($me.checkName + '_header'); if (headerCheckBox) { headerCheckBox.checked = false; } if (allCheckedCount > 0) { if (headerCheckBox) { headerCheckBox.checked = true; } } cancelBubble(e); if($me.onCheckedCallback){ $me.onCheckedCallback($me, table, this.rowData); } }; } } if (("locked" == flag) && (0 == $me.lockedNames.length)) break; } var currentFoundColumn = currentOperColumns[columnIndex]; var td = document.createElement("td"); td.setAttribute("columnName",currentFoundColumn.name); //td.style.width = (currentFoundColumn.width+$me.columnAddWidth) +"px"; if (0 == index) { //td.style.borderTop="1px dotted #CAD9EA"; td.style.borderTop = "1px dotted transparent"; } td.style.display = currentFoundColumn.hidden ? "none": ""; td.style.textAlign = currentFoundColumn.align; //(value,tableObj,columnName,columnIndex,rowData){return value;}; var currentColumnValue = data[currentFoundColumn.mapping] + ""; if ( /*(!currentColumnValue)||*/ ("undefined" == currentColumnValue)) { currentColumnValue = $me.emptyChar; } var tempInnerHTML = ""; if (((tempDatasLen - 1) == index) && ($me.isStatistic) &&($me.statisticColumnNames.length > 0)) { tempInnerHTML = currentColumnValue; } else { tempInnerHTML = currentFoundColumn.renderer(currentColumnValue, $me, currentFoundColumn.name, columnIndex, data); } //待renderer执行后设定的backgroupdColor可生效 if(currentFoundColumn.backgroundColor){ td.style.backgroupColor = currentFoundColumn.backgroupColor; } var currentDataType = currentFoundColumn['type']; if (("number" == currentDataType) || ("double" == currentDataType)) { if (currentColumnValue == tempInnerHTML) { if (false == currentFoundColumn['format']) { tempInnerHTML = tempInnerHTML; } else { tempInnerHTML = formatNumberThousand(tempInnerHTML); } } } var otherContentDivClass = ""; if ($me.isAutoBreakContent) { otherContentDivClass = "autoBreakContent"; } var forecolor = "black"; if(currentFoundColumn.color){ forecolor = currentFoundColumn.foreColor; } td.innerHTML = "
" + tempInnerHTML + "
"; table_body_row.appendChild(td); if ("nonLocked" == flag) { if (columnIndex == $me.lastDisplayColumnIndex) { var tempClass = "x-panel-table-td-border"; if ((index + 1) % 2 == 0) { td.style.borderRightColor = "#FAFAFA"; } else { td.style.borderRightColor = "#F7F3F7"; } td.className = tempClass; } } columnIndex++; } } if ($me.span && ("nonLocked" == flag)) { try { tableHeaderDivContainer.removeChild($me.span); } catch(e) {} $me.span = null; } var oldDisplay = ""; if ($me.displayToggleContainerObj) { oldDisplay = $me.displayToggleContainerObj.style.display; $me.displayToggleContainerObj.style.display = "block"; } var realHeight = Math.max($me.tempDatas.length * 24, table.offsetHeight); if ($me.displayToggleContainerObj) { $me.displayToggleContainerObj.style.display = oldDisplay; } if ($me.isMobile) { tableDiv.style.overflow = "hidden"; } if (((realHeight + 5) > $me.mainDataHeight) && ("nonLocked" == flag)) { vScroll = true; if (!$me.isMobile && !$me.isPad) { $me.isInitHeight = true; if(!tableHeaderDiv.oldWidth){ tableHeaderDiv.oldWidth = parseInt(tableHeaderDiv.style.width); } tableHeaderDiv.style.width = (parseInt(tableHeaderDiv.oldWidth) - 16) + "px"; var span = document.createElement('div'); $me.span = span; span.innerHTML = "  "; span.className = "attachElement"; if ($me.isPagePrint) { span.style.display = "none"; tableHeaderDiv.style.width = (relativeWidth) + "px"; } if ($me.showHeader) { span.style.height = (30 + 30 * complexHeaders.length) + "px"; span.style.lineHeight = (30 + 30 * complexHeaders.length) + "px"; } tableHeaderDivContainer.appendChild(span); } } if ($me.isMobile) { tracywindyDynamicLoadJs(getRootPath() + "/js/tracywindy/iscroll.js"); new iScroll(tableDiv, { hScroll: hScroll, vScroll: vScroll, hScrollbar: true, vScrollbar: true, onScrollMove: function(e) { try { tableHeaderDiv.scrollLeft = -1 * this.x; $me.lockedTableDiv.scrollTop = -1 * this.y; } catch(e) {} } }); } if ($me.isPagePrint) { jQuery("table.x-panel-table-header tbody tr td>div").css("color", "#000000"); jQuery("table.x-panel-table-header").css("borderColor", "transparent"); jQuery("table.x-panel-table-header tbody tr>td").css("background", "#DDD"); jQuery("table.x-panel-table-header tbody tr>td").css("borderColor", "silver"); } if ("nonLocked" == flag) { if ($me.lockedTable) { var tableRows = table.rows; var lockedTableRows = $me.lockedTable.rows; var rowLen = tableRows.length; var oldDisplay = ""; var $hideTabs = jQuery("div.tabs-panels>div.panel:hidden"); jQuery("div.tabs-panels>div.panel:hidden").each(function() { var hideTabsDisplayToggleContainerObj = jQuery(this).find("div[id='" + $me.mainDivId + "']")[0]; if (hideTabsDisplayToggleContainerObj) { $me.displayToggleContainerObj = this; } }); if ($me.displayToggleContainerObj) { oldDisplay = $me.displayToggleContainerObj.style.display; $me.displayToggleContainerObj.style.display = "block"; } for (var i = 0; i < rowLen; i++) { var tableRow = tableRows[i]; var lockedTableRow = lockedTableRows[i]; if (tableRow.offsetHeight != lockedTableRow.offsetHeight) { tableRow.style.height = lockedTableRow.style.height = Math.max(tableRow.offsetHeight, lockedTableRow.offsetHeight) + "px"; } } if ($me.displayToggleContainerObj) { $me.displayToggleContainerObj.style.display = oldDisplay; } } $me.loadMask.hide(); //新增拖动改变列的宽度 if ($me.showHeader && $me.isColumnResizable /*&& !$me.isFit*/) { if (!window.jQuery) { tracywindyDynamicLoadJs(getRootPath() + "/js/jquery/jquery.min.js"); } if (!jQuery.resizable) { tracywindyDynamicLoadJs(getRootPath() + "/js/jquery/jquery.easyui.min.js"); } var $ = jQuery; var $mainDiv = jQuery($me.mainDiv); $mainDiv.append("
"); var tableHeaderRows = tableHeader.rows; var tableHeaderRow = tableHeaderRows[tableHeaderRows.length - 1]; var tableHeaderCells = tableHeaderRow.cells; var resizableAddSize = $me.resizableAddSize || 0; for (var i = 0; i < tableHeaderCells.length; i++) { var tableHeaderCell = tableHeaderCells[i]; if(!$me.isNeedLocked){ if($me.isRank && $me.isCheck){ if(i < 2){ continue; } }else if($me.isRank || $me.isCheck) { if(i < 1){ continue; } } } var startResizeFunc = (function(tableHeaderCell, index, $mainDiv, $me) { return function(e) { $me.tableDiv.style.overflowX = "auto"; tableHeaderCell.beforeResizeLeft = (e.pageX - $mainDiv.offset().left - 1); tableHeaderCell.beforeResizeWidth = jQuery(tableHeaderCell).width(); tableHeaderCell.beforeResizeHeight = jQuery(tableHeaderCell).height(); //$mainDiv.children("div.datagrid-resize-proxy").css({left:tableHeaderCell.beforeResizeLeft,display:"block"}); $mainDiv.children("div.datagrid-resize-proxy").css({ left: e.pageX + resizableAddSize, display: "block" }); }; })(tableHeaderCell, i, $mainDiv, $me); var stopResizeFunc = (function(tableHeaderCell, index, $mainDiv, $me) { return function(e) { //$mainDiv.children("div.datagrid-resize-proxy").css({left:e.pageX-$mainDiv.offset().left-1,display:"none"}); $mainDiv.children("div.datagrid-resize-proxy").css({ left: e.pageX - 1 + resizableAddSize, display: "none" }); var afterResizeLeft = (e.pageX - $mainDiv.offset().left - 1); var changedWidth = (afterResizeLeft - tableHeaderCell.beforeResizeLeft); var columnName = tableHeaderCell.getAttribute("columnName"); var currentColumn = $me.columns[$me.findColumnIndex(columnName)]; currentColumn.width = (currentColumn.width+changedWidth); /*if(!$me.resizeLoadMask){ $me.resizeLoadMask = new tracywindyLoadMask(document.body,"正在调整数据列宽,请稍等..."); } $me.resizeLoadMask.show(); createDataTable($me); $me.resizeLoadMask.hide();*/ /*modify by traycywindy revise the resizable bug*/ jQuery(tableHeaderCell).find(">div:first").css("width", (currentColumn.width) + "px"); jQuery($me.table).find("td[columnName='"+columnName+"']").each(function(ii) { var currentWidthAdd = 0; if ((tableHeaderCell.beforeResizeWidth - 1) > jQuery(this).width()) { //currentWidthAdd = 1; } var $div = jQuery(this).find(">div:first"); $div.css("width", (currentColumn.width) + "px"); }); $(tableHeaderCell).css("height", tableHeaderCell.beforeResizeHeight + "px"); }; })(tableHeaderCell, i, $mainDiv, $me); jQuery(tableHeaderCell).resizable({ handles: "e", onStartResize: startResizeFunc, onResize: function(e) { //$mainDiv.children("div.datagrid-resize-proxy").css({left:e.pageX-$mainDiv.offset().left-1,display:"block"}); $mainDiv.children("div.datagrid-resize-proxy").css({ left: e.pageX + resizableAddSize, display: "block" }); return false; }, onStopResize: stopResizeFunc }); } } //同步高度 $me.synchronizedHeight(); } else { var tableRows = table.rows; var rowLen = tableRows.length; for (var i = 0; i < rowLen; i++) { var tableRow = tableRows[i]; var cells = tableRow.cells; var cellLen = tableRow.cells.length; var tdCell = cells[cellLen - 1]; tdCell.style.borderRight = "0px solid transparent"; try { tdCell.style.width = (parseInt(tdCell.style.width) + 1) + "px"; } catch(e) {} } } //新增排序操作 if ($me.showHeader && $me.isRemoteSortable) { if (!window.jQuery) { tracywindyDynamicLoadJs(getRootPath() + "/js/jquery/jquery.min.js"); } var $ = jQuery; var tableHeaderRows = tableHeader.rows; var tableHeaderRow = tableHeaderRows[tableHeaderRows.length - 1]; var tableHeaderCells = tableHeaderRow.cells; for (var i = 0; i < tableHeaderCells.length; i++) { var tableHeaderCell = tableHeaderCells[i]; var sortClickFunc = (function(index) { return function(e) { var currentColumnConfig = this.columnConfig; if (currentColumnConfig) { var isContainColumn = false; if ($me.tableData.length > 0) { isContainColumn = ("undefined" != typeof($me.tableData[0][currentColumnConfig["mapping"]])); } if (!isContainColumn) return; var SortDir = !this.SortDir ? "asc": (("asc" == this.SortDir) ? "desc": "asc"); this.SortDir = SortDir; var SortField = currentColumnConfig["mapping"]; $me.SortField = SortField; $me.SortDir = SortDir; jQuery($me.mainDiv).find("img.table-sort-img").remove(); var $sortDiv = jQuery(""); $sortDiv.attr("src", getRootPath() + "/images/sort_" + SortDir + ".gif"); $sortDiv.addClass("table-sort-img"); jQuery(this).find(">div:first").append($sortDiv); $me.setParams({ "TableRemoteSortField": SortField , "TableRemoteSortDir": SortDir }); $me.reload(); } }; })(i, $me); jQuery(tableHeaderCell).click(sortClickFunc); } } //modify by tracywindy 2014-05-12 expandOrCollapseQueryArea($me.id,true); return true; } function createLockedDataTable($me) { return createAllDataTable($me, $me.lockedComplexHeaders, $me.lockedTableHeaderDivContainer, $me.lockedTableHeaderDiv, $me.lockedTableDiv, $me.lockedTable, "locked"); } function createNonLockedDataTable($me) { return createAllDataTable($me, $me.complexHeaders, $me.tableHeaderDivContainer, $me.tableHeaderDiv, $me.tableDiv, $me.table, "nonLocked"); } function createDataTable($me) { if($me.complexHeadersCallBack){ $me.complexHeadersCallBack(); } //记载数据成功后回调函数 if ($me.completeCallBack) { $me.completeCallBack(); } initDataTable($me); if (!$me.isNeedLocked) { createNonLockedDataTable($me); return; } $me.lockedTableHeaderDivContainer.style.display = ""; $me.lockedTableDiv.style.display = ""; $me.lockedTable.style.display = ""; if (createLockedDataTable($me)) { createNonLockedDataTable($me); } } //page分页 function createPage($me) { var jsonData = $me.jsonData; var totalCountAttibute = $me.basicInfo.total; var total = $me.total || jsonData[totalCountAttibute]; var page = $me.pageDiv; var start = parseInt($me.params['start'] || $me.start); var pageSize = parseInt($me.params['pageSize'] || $me.pageSize); var realTotalCount = parseInt(total); var currentPage = start / pageSize + 1; var totalPages = parseInt((realTotalCount - 1) / pageSize) + 1; var realSize = start + pageSize; $me.start = start; $me.pageSize = pageSize; $me.realTotalCount = realTotalCount; $me.currentPage = currentPage; $me.totalPages = totalPages; $me.realSize = realSize; //最后一页 if (currentPage == totalPages) { realSize = realTotalCount; } if (!document.getElementById($me.id + "_pageForm")) { var pageForm = document.createElement("form"); $me.pageForm = pageForm; var pageFormInnerHtml = "" + ""; with(pageForm) { id = $me.id + "_pageForm"; action = window.location.href; method = 'POST'; target = "_self"; innerHTML = pageFormInnerHtml; } document.body.appendChild(pageForm); } var contentPage = ""; contentPage += "每页 条,当前显示 " + Math.min(start + 1, realSize) + "-" + (realSize) + " 条记录/共 " + realTotalCount + " 条记录,"; contentPage += ""; if ($me.isShortPage) { contentPage = "条/页,共 " + totalPages + " 页 / " + realTotalCount + " 条,"; contentPage += ""; } var toInfo = ""; if (currentPage > 1) { toInfo += ' '; toInfo += ' '; } else { toInfo += ' '; toInfo += ' '; } toInfo += " 第 " + "" + " 页"; if (currentPage < totalPages) { toInfo += ' '; toInfo += ' '; } else { toInfo += ' '; toInfo += ' '; } toInfo += ''; page.innerHTML = (contentPage + toInfo); document.getElementById('id_skip_page_' + $me.id).onkeypress = function(e) { var keyCode = getEvent(e).keyCode || getEvent(e).charCode; if (keyCode == 13) { goPage($me.id, parseInt("" == this.value ? 0 : this.value)); } }; document.getElementById('id_change_page_size_' + $me.id).onkeypress = function(e) { var keyCode = getEvent(e).keyCode || getEvent(e).charCode; if (keyCode == 13) { var currentTable = getTracywindyTable($me.id); currentTable.pageSize = parseInt(parseInt("" == this.value ? 0 : this.value)); if (0 == currentTable.pageSize) { alert("显示条数必须大于0"); return; } if ('local' == currentTable.loadMode) { currentTable.loadMask.show(); doLocalTablePageReload(currentTable.params, 0, currentTable.pageSize); } else { currentTable.load(false); } } }; } function doChangePageSize(tableId, currentPageSize) { var keyCode = getEvent(e).keyCode || charCode; if (keyCode == 13) { var currentTable = getTracywindyTable(tableId); currentTable.pageSize = parseInt(currentPageSize); if (0 == currentTable.pageSize) { alert("显示条数必须大于0"); return; } currentTable.load(false); } } function goPage(tableId, toWhere) { var currentTable = getTracywindyTable(tableId); var pageSize = currentTable.pageSize; var start = 0; var currentPage = currentTable.currentPage; var totalPages = currentTable.totalPages; var total = currentTable.realTotalCount; if (typeof(toWhere) == 'string') { switch (toWhere) { case 'first': { start = 0; break; } case 'prev': { start = (currentPage - 2) * pageSize; break; } case 'next': { start = currentPage * pageSize; break; } case 'last': { start = (totalPages - 1) * pageSize; break; } } } else { if (toWhere < 1) { alert("跳转页数应该大于等于1"); return; } else if (toWhere > totalPages) { alert("跳转页数应该小于等于" + totalPages); return; } start = (toWhere - 1) * pageSize; } currentTable.params['start'] = start; currentTable.start = start; if ('local' == currentTable.loadMode) { currentTable.loadMask.show(); doLocalTablePageReload(currentTable.params, start, pageSize); } else { currentTable.params['start'] = start; currentTable.params['pageSize'] = pageSize; currentTable.params['total'] = total; currentTable.loadAjaxTableData(); } } function doLocalTablePageReload(params, start, pageSize) { var oldHref = window.location.href; var prefixHref = ""; var locationIndex = oldHref.indexOf("?"); var jsonObj = {}; if (locationIndex > -1) { prefixHref = oldHref.substring(0, locationIndex + 1); suffixHref = trim(oldHref.substring(locationIndex + 1, oldHref.length)); } else { prefixHref = oldHref + "?"; } jsonObj['table_load_local_page_start'] = start; jsonObj['table_load_local_page_limit'] = pageSize; var url = prefixHref + jsonToAttachmentParams(jsonObj); var constantFormId = "table_local_reload_form_id"; var form = document.getElementById(constantFormId); if (form) { document.body.removeChild(form); } form = document.createElement("form"); var tempInnerHtml = ""; for (var p in params) { var tempStr = params[p]; if (Object.prototype.toString.call(params[p]) == '[object String]') { tempStr = params[p].replace(/'/gi, '''); //.replace(/"/gi,'"'); } tempInnerHtml += ""; } with(form) { style.display = "none"; id = constantFormId; target = "_self"; action = url; method = "post"; innerHTML = tempInnerHtml; } document.body.appendChild(form); form.submit(); return false; } function attachmentParamsToJson(attchmentParams) { var jsonObj = {}; var keysets = attchmentParams.split("&"); for (var i = 0; i < keysets.length; i++) { var keyset = keysets[i].split("="); var key = trim(keyset[0]); var value = (keyset.length > 1) ? nullToString(keyset[0]) : ""; jsonObj[key] = value; } return jsonObj; } function jsonToAttachmentParams(jsonObj) { var tempArr = new Array(); for (var p in jsonObj) { var key = trim(p); var value = nullToString(jsonObj[p]); tempArr.push(key + "=" + value); } return tempArr.join("&"); } function replaceParams(paramStr, paramName, paramValue) { var prefixRegExp = new RegExp("\s*&\s*" + paramName + "\s*=[^&]*&", "g"); var suffixRegExp = new RegExp("\s*&\s*" + paramName + "\s*=[^&]*&$", "g"); paramStr = paramStr.replace(prefixRegExp, "&" + paramName + "=" + paramValue + "&"); paramStr = paramStr.replace(suffixRegExp, "&" + paramName + "=" + paramValue + "&"); paramStr += paramName + "=" + paramValue + "&"; return paramStr; } function doQueryAreaAutoQuery(table, isClear, isReload) { if (isClear) { for (var i = 0; i < table.queryAreaComboboxs.length; i++) { table.queryAreaComboboxs[i].setValue(""); } } var params = getQueryAreaParams(table, isClear); table.setParams(params); if (isReload) { table.load(); } } function getQueryAreaParams(table, isClear) { var queryAreaDivDom = table.queryAreaDiv; var params = {}; recusionAllChildrenNodesParams(queryAreaDivDom, params, isClear); for (var p in params) { if (!p) continue; if (new RegExp("^" + table.id + "_queryArea_").test(p)) { var key = p.substring((table.id + "_queryArea_").length, p.length); var value = params[p]; params[key] = value; delete params[p]; } } return params; } function doQuickQuery(e,table){ if(e && e.keyCode==13){ doQueryAreaAutoQuery(table,false,true); } } /*function clearQueryAreaParams(table,isReload){ var params = getQueryAreaParams(table,true); table.setParams(params); if(isReload){ table.load(); } }*/ function recusionAllChildrenNodesParams(parentDom, params, isClear) { var allChildrenNodes = parentDom.childNodes; var allChildrenNodesLen = allChildrenNodes.length; if (allChildrenNodesLen > 0) { for (var i = 0; i < allChildrenNodesLen; i++) { var childNode = allChildrenNodes[i]; var nodeTagName = childNode.tagName; if (!nodeTagName) { continue; } switch (nodeTagName.toUpperCase()) { case "SELECT": case "TEXTAREA": { setParamByDom(childNode, params, isClear); break; } default: { recusionAllChildrenNodesParams(childNode, params, isClear); } } } } else { setParamByDom(parentDom, params, isClear); } } function setParamByDom(domNode, params, isClear) { if (isClear) { domNode.value = ""; } var paramName = domNode.name; var paramValue = domNode.value || ""; if (paramName) { params[paramName] = paramValue; } }