var mygrid_recv; var page_count = 5; var column_count; var jsonCodeStlmodeSetObj; var changeCount = 0; function $(id) { return document.getElementById(id); } function initWinScreen() { var winScreenHeight = 0; var winScreenWidth = 0; if (window.screen.height) { winScreenHeight = window.screen.height; } if (window.screen.width) { winScreenWidth = window.screen.width; } if (winScreenWidth >= 1440 && winScreenWidth >= 900) { document.getElementById("mygrid_container_recv").style.height = "580px"; } else if (winScreenWidth >= 1366 && winScreenWidth >= 768) { document.getElementById("mygrid_container_recv").style.height = "340px"; } else if (winScreenWidth >= 1024 && winScreenWidth >= 768) { document.getElementById("mygrid_container_recv").style.height = "300px"; } } function doInitRecvGrid() { mygrid_recv = new dhtmlXGridObject('mygrid_container_recv'); mygrid_recv.setImagePath("../images/"); mygrid_recv.setSkin("xp"); mygrid_recv.setHeader("结算方式编码,结算方式,财务软件代码"); mygrid_recv.setInitWidths("120,120,120"); mygrid_recv.setColAlign("center,left,left"); mygrid_recv.setColSorting("str,str,str"); mygrid_recv.setColTypes("ed,ed,ed"); var urlVal = "CodeStlmodeSetGridSource.aspx?read=exist&showcount=1&val=" + newGuid(); var loader = dhtmlxAjax.getSync(urlVal); var loadVal = loader.xmlDoc.responseText; loader = null; if (parseInt(loadVal) == 1) { mygrid_recv.loadXML("CodeStlmodeSetGridSource.aspx?read=init&showcount=1"); setTimeout(function() { ReShowLabel(mygrid_recv); }, 200); } mygrid_recv.init(); mygrid_recv.enableEditEvents(true, false, true); mygrid_recv.enableMultiselect(true); mygrid_recv.enableKeyboardSupport(true); var pushVal = ""; var pressRecord = ""; var pressRowIndex = -1; var pressCellIndex = -1; var pressCount = 0; var isExchange = false; var shiftCount = 0; var isDelete = 0; var flagFilter = 0; var flagTab = 0; var flagEnter = 0; var flagDelete = 0; //手动编写Grid控件编辑事件,由于免费控件没有提供完整的编辑判断功能,现特此做更改 mygrid_recv.attachEvent("onEditCell", function(stage, rId, cInd, nValue, oValue) { var newCheckValue = false; //初始化状态 if (stage == 0) { var selectedId = mygrid_recv.getSelectedRowId(); var rowIndex = mygrid_recv.getRowIndex(selectedId); var oldVal = mygrid_recv.cellByIndex(rowIndex, 0).getValue().trim(); return true; } if (stage == 1) { var selectedId = mygrid_recv.getSelectedRowId(); var rowIndex = mygrid_recv.getRowIndex(selectedId); var txtEdit; for (i = 0; i < document.all.length; i++) { if (document.all(i).tagName == "TEXTAREA") { txtEdit = document.all(i); txtEdit.focus(); txtEdit.select(); break; } } } //如果编辑结束 if (stage == 2) { return true; } }); //键盘操作事件 mygrid_recv.attachEvent("onKeyPress", function(code, cFlag, sFlag) { //onKeyPress begin //获取当前RowID var selectedId = mygrid_recv.getSelectedRowId(); //获取当前RowIndex var rowIndex = mygrid_recv.getRowIndex(selectedId); //获取当前CellIndex(ind) var ind = mygrid_recv.getSelectedCellIndex(); //触发操作事件前获取单元值 var oldVal = mygrid_recv.cellByIndex(rowIndex, ind).getValue(); //获取编辑单元 var txtEdit; for (i = 0; i < document.all.length; i++) { if (document.all(i).tagName == "TEXTAREA") { txtEdit = document.all(i); break; } } //Tab键 if (code == 9) { var colCount = mygrid_recv.getColumnsNum(); var rowCount = mygrid_recv.getRowsNum(); if (ind < colCount) { isExchange = false; pressRecord = ""; pressRowIndex = -1; pressCellIndex = -1; mygrid_recv.editStop(true); mygrid_recv.cellByIndex(rowIndex, ind).setLabel(oldVal); var cInd = ind; var rId = selectedId; mygrid_recv.selectCell(rowIndex, ind + 1, true, true); mygrid_recv.editCell(); if (ind == colCount - 1) { if (rowIndex < rowCount) { mygrid_recv.editStop(true); mygrid_recv.clearSelection(); mygrid_recv.selectCell(rowIndex + 1, 0, true, true); mygrid_recv.editCell(); } else { return; } } } } else if (code == 40)//向下方向键 { var rowCount = mygrid_recv.getRowsNum(); mygrid_recv.clearSelection(); mygrid_recv.editStop(); if (rowIndex == (rowCount - 1)) { addRecvRow(); } else { mygrid_recv.selectCell(rowIndex + 1, 0, true, true); mygrid_recv.editCell(); } } else if (code == 38)//向上箭头 { if (rowIndex > 0) { mygrid_recv.clearSelection(); mygrid_recv.editStop(); mygrid_recv.selectCell(rowIndex - 1, 0, true, true); mygrid_recv.editCell(); } } else { return true; } }); setTimeout(function() { markStatusColor(mygrid_recv); }, 400); } //讲下拉列表Combo所有生成Array数组 function setComboByArray(gridNewObj, comboObj, rowGID, colIndex) { var comboVal_arg = new Array(); comboVal_arg = comboObj.getKeys(); var newCombo = gridNewObj.getCustomCombo(rowGID, colIndex); for (var i = 0; i < comboVal_arg.length; i++) { var txtValue = comboObj.get(comboVal_arg[i]); newCombo.put(comboVal_arg[i], txtValue); } } function spliceBuffer(arrayRow) { var strBuffer = ""; for (var i = 0; i < arrayRow.length; ++i) { strBuffer = strBuffer + arrayRow[i]; if (i != arrayRow.length - 1) { strBuffer = strBuffer + ","; } } alert(strBuffer); } //将整行值暂存到数组中 function getGridRowArray(arrayRow, gridObj, RowID) { var arg = new Array(); var columnCount = gridObj.getColumnsNum(); var rowCount = gridObj.getRowsNum(); alert(columnCount); alert(rowCount); for (var i = 0; i < columnCount; i++) { alert(i); var cellObj = gridObj.cellById(RowID, i); alert(cellObj); if (i == 5) { alert("kill"); } var cell = gridObj.cellById(RowID, i); if (i == 5) { alert("kill"); } var rowValue = cell.getValue(); if (i == 5) { alert("kill"); } if (i == columnCount - 1) { arg.push(rowValue == 1 ? true : false); break; } //校验获取的值是否为数字,如果是数字记录时不加引号,如果是字符增加引号 var re = /^[-\+]?\d+(\.\d+)?$/; if (!re.test(rowValue)) { switch (i) { case 4: case 5: case 6: case 9: alert("请正确输入数字"); return; break; case 8: //如果是币别 则根据value值获取text值 var curCombo = gridObj.getCustomCombo(RowID, i); arg.push(curCombo.get(rowValue)); break; default: arg.push(rowValue); break; } } else { if (i == 7) { //获取单价 var unitPrice = isObjNaN(parseFloat(gridObj.cellById(RowID, 4).getValue())); //获取数量 var quantityCount = isObjNaN(parseFloat(gridObj.cellById(RowID, 5).getValue())); //金额 var amount = unitPrice * quantityCount; arg.push(outputMoney(amount.toString())); } else { arg.push(outputMoney(isObjNaN(parseFloat(rowValue)).toString())); } } } //alert(arg); return arg; } function isObjNaN(Obj) { if (Obj.toString().toLowerCase() == "nan") { return 0; } else { return Obj; } } function addRecvRow() { if (mygrid_recv.getRowsNum() > 0) { var newId = newGuid(); //获取插入新纪录位置 var rowCount = mygrid_recv.getRowsNum(); mygrid_recv.addRow(newId, ["", "", ""], rowCount); mygrid_recv.clearSelection(); mygrid_recv.editStop(true); mygrid_recv.selectCell(mygrid_recv.getRowIndex(newId), 0, true, true); mygrid_recv.editCell(); } else { mygrid_recv.loadXML("CodeStlmodeSetGridSource.aspx?read=add&showcount=1"); } } function deleteRecvRow() { mygrid_recv.editStop(); var selRowID = mygrid_recv.getSelectedRowId(); var selGroup = new Array(); if (selRowID.indexOf(",") > 0) { selGroup = selRowID.split(","); } else { if (selRowID != null) { selGroup.push(selRowID); } } //查看是否有被选中的币别项 if (selGroup.length > 0) { if (selGroup.length > 1) { var delCount = 0; if (window.confirm("您确定要将所选部门删除吗?")) { var dg = new dialog(); dg.html = ""; dg.width = 200; dg.height = 100; dg.title = "标题"; dg.show(); while (delCount < selGroup.length) { var rowIndex = mygrid_recv.getRowIndex(selGroup[delCount]); var CodeStlmodeSetName = mygrid_recv.cellByIndex(rowIndex, 1).getValue(); var cusName = mygrid_recv.cellByIndex(rowIndex, 2).getValue(); //var urlVal = "CodeStlmodeSetService.aspx?gid="+selGroup[delCount]+"&handle=delete"+"&no="+newGuid(); var urlVal = "CodeStlmodeSetGridSource.aspx?read=delete&gid=" + selGroup[delCount]; var loader = dhtmlxAjax.getSync(urlVal); var loadVal = loader.xmlDoc.responseText; if (loadVal > 0) { mygrid_recv.deleteRow(selGroup[delCount]); } else { mygrid_recv.deleteSelectedRows(); } delCount++; } dg.close(); } } else { var delCount = 0; while (delCount < selGroup.length) { var rowIndex = mygrid_recv.getRowIndex(selGroup[delCount]); var CodeStlmodeSetName = mygrid_recv.cellByIndex(rowIndex, 1).getValue(); var cusName = mygrid_recv.cellByIndex(rowIndex, 2).getValue(); if (window.confirm("您确定要将(" + CodeStlmodeSetName + ")删除吗?")) { var dg = new dialog(); dg.html = ""; dg.width = 200; dg.height = 100; dg.title = "标题"; dg.show(); //var urlVal = "CodeStlmodeSetService.aspx?gid="+selGroup[delCount]+"&handle=delete"+"&no="+newGuid(); var urlVal = "CodeStlmodeSetGridSource.aspx?read=delete&gid=" + selGroup[delCount]; var loader = dhtmlxAjax.getSync(urlVal); var loadVal = loader.xmlDoc.responseText; if (loadVal > 0) { mygrid_recv.deleteRow(selGroup[delCount]); dg.close(); //alert("删除成功"); } else { mygrid_recv.deleteSelectedRows(); dg.close(); } } delCount++; } } } else { alert("未选中要操作的币别项"); } } function saveRecvChange() { mygrid_recv.editStop(); jsonCodeStlmodeSetObj = "{\"$type\":\"DSWeb.Models.JsonCodeStlmodeSetGroupEntity, DSWeb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\",\"JsonCodeStlmodeSetEntities\":["; column_count = mygrid_recv.getColumnsNum(); var tempJson = ""; var rowCount = mygrid_recv.getRowsNum(); for (var i = 0; i < rowCount; i++) { //获取RowID tempJson = ""; var rId = mygrid_recv.getRowId(i); tempJson += "\"$type\":\"DSWeb.Models.JsonCodeStlmodeSetEntity, DSWeb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\","; tempJson += "\"CodeStlmodeSet1\":\"" + rId + "\","; //gid for (var j = 0; j < column_count; j++) { var cell = mygrid_recv.cellById(rId, j); var value = ""; //value = cell.cell.innerText; // .getValue(); value = cell.cell.textContent || cell.cell.innerText; if (value == "") { value = "null"; } tempJson += "\"CodeStlmodeSet" + (j + 2) + "\":\"" + value + "\","; } //tempJson += "\"CodeStlmodeSet6\":\""+BSNO+"\""; tempJson = "{" + tempJson + "}"; if (i == rowCount - 1) { jsonCodeStlmodeSetObj = jsonCodeStlmodeSetObj + tempJson; } else { jsonCodeStlmodeSetObj = jsonCodeStlmodeSetObj + tempJson + ","; } } jsonCodeStlmodeSetObj += "]}"; var txt_name = $("recvContainer"); txt_name.value = jsonCodeStlmodeSetObj; msgBox(); setTimeout(postEnterCodeStlmodeSet, 200); } function doOnRowSelected(rowID, celInd) { alert("Selected row ID is " + rowID + "\nUser clicked cell with index " + celInd); } function getValue() { var colLabel = mygrid_recv.getColumnLabel(0); alert(colLabel); var colLabel2 = mygrid_recv.getColumnLabel(0, 1); alert(colLabel2); } //post数据 function postEnterCodeStlmodeSet() { var myForm = document.getElementById("form1"); myForm.submit(); } function findRow() { var colNum = mygrid.getColumnsNum(); //alert(colNum); var count = mygrid.getRowsNum(); //alert(count); //var combo = mygrid.getCombo(1); //combo.put("abc","abc"); } function initGrid() { doInitRecvGrid(); //setTimeout(doInitPayGrid,200); //setTimeout(totalDynamicCodeStlmodeSetGain,700); } //放弃应收币别修改 重新加载页面 function recoverRecvChange() { mygrid_recv.editStop(); var selRowID = mygrid_recv.getSelectedRowId(); //查看是否有被选中的币别项 if (selRowID != null) { var rowIndex = mygrid_recv.getRowIndex(selRowID); var status = mygrid_recv.cellByIndex(rowIndex, 0).getValue(); var CodeStlmodeSetName = mygrid_recv.cellByIndex(rowIndex, 1).getValue(); var cusName = mygrid_recv.cellByIndex(rowIndex, 2).getValue(); if (window.confirm("您确定放弃当前行的修改吗?")) { var dg = new dialog(); dg.html = ""; dg.width = 200; dg.height = 100; dg.title = "标题"; dg.show(); var urlVal = "CodeStlmodeSetGridSource.aspx?read=recover&gid=" + selRowID + "&val=" + newGuid(); var loader = dhtmlxAjax.getSync(urlVal); var loadVal = loader.xmlDoc.responseText; if (!IsNum(loadVal)) { var recvArg = new Array(); recvArg = loadVal.split(","); var selRowIndex = mygrid_recv.getRowIndex(recvArg[0]); var colCount = mygrid_recv.getColumnsNum(); for (var i = 0; i < colCount; i++) { mygrid_recv.cellByIndex(selRowIndex, i).setValue(recvArg[i + 1]); } dg.close(); //alert("恢复成功"); //refreshRecv();//刷新 } else { if (parseInt(loadVal) == -3) { mygrid_recv.deleteSelectedRows(); } dg.close(); } ReShowLabel(mygrid_recv); } else { return; } } else { alert("未选中要操作的币别项"); } } function print_recv() { alert("正在打印"); } function amountSum(gridName) { if (gridName == "recv") { //计算应收 mygrid_recv } else { //计算应付 } } function outputMoney(number) { number = number.replace(/\,/g, ""); if (isNaN(number) || number == "") return ""; number = Math.round(number * 100) / 100; if (number < 0) return '-' + outputDollars(Math.floor(Math.abs(number) - 0) + '') + outputCents(Math.abs(number) - 0); else return outputDollars(Math.floor(number - 0) + '') + outputCents(number - 0); } function outputDollars(number) { if (number.length <= 3) return (number == '' ? '0' : number); else { var mod = number.length % 3; var output = (mod == 0 ? '' : (number.substring(0, mod))); for (i = 0; i < Math.floor(number.length / 3); i++) { if ((mod == 0) && (i == 0)) output += number.substring(mod + 3 * i, mod + 3 * i + 3); else output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3); } return (output); } } function outputCents(amount) { amount = Math.round(((amount) - Math.floor(amount)) * 100); return (amount < 10 ? '.0' + amount : '.' + amount); } //获取GUID function newGuid() { var guid = ""; for (var i = 1; i <= 32; i++) { var n = Math.floor(Math.random() * 16.0).toString(16); guid += n; if ((i == 8) || (i == 12) || (i == 16) || (i == 20)) guid += "-"; } return guid.toUpperCase(); } function dialog() { this.width = 450; this.height = 360; this.title_height = 20; this.html = ''; this.title = ''; var self = this; var bgObj, msgObj, titleObj; this.close = function () { document.body.removeChild(document.getElementById("bgDiv")); document.getElementById("msgDiv").removeChild(document.getElementById("msgTitle")); document.body.removeChild(document.getElementById("msgDiv")); } this.show = function () { var msgw, msgh, bordercolor; msgw = self.width; msgh = self.height; bordercolor = "#336699"; titlecolor = "#99CCFF"; var sWidth, sHeight; sWidth = document.body.offsetWidth; sHeight = screen.height; bgObj = document.createElement("div"); bgObj.setAttribute('id', 'bgDiv'); bgObj.style.position = "absolute"; bgObj.style.top = "0"; bgObj.style.background = "#777"; bgObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75"; bgObj.style.opacity = "0.6"; bgObj.style.left = "0"; bgObj.style.width = sWidth + "px"; bgObj.style.height = sHeight + "px"; bgObj.style.zIndex = "10000"; document.body.appendChild(bgObj); msgObj = document.createElement("div") msgObj.setAttribute("id", "msgDiv"); msgObj.setAttribute("align", "center"); msgObj.style.background = "white"; msgObj.style.border = "1px solid " + bordercolor; msgObj.style.position = "absolute"; msgObj.style.left = "50%"; msgObj.style.top = "30%"; msgObj.style.font = "12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif"; msgObj.style.marginLeft = "-225px"; msgObj.style.marginTop = -75 + document.documentElement.scrollTop + "px"; msgObj.style.width = msgw + "px"; msgObj.style.height = msgh + "px"; msgObj.style.textAlign = "center"; msgObj.style.lineHeight = "25px"; msgObj.style.zIndex = "10001"; titleObj = document.createElement("h4"); titleObj.setAttribute("id", "msgTitle"); titleObj.setAttribute("align", "center"); titleObj.style.margin = "0"; titleObj.style.padding = "3px"; titleObj.style.background = bordercolor; titleObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);"; titleObj.style.opacity = "0.75"; titleObj.style.border = "1px solid " + bordercolor; titleObj.style.height = self.title_height + "px"; titleObj.style.font = "12px Verdana, Geneva, Arial, Helvetica, sans-serif"; titleObj.style.color = "white"; titleObj.style.cursor = "pointer"; titleObj.innerHTML = self.title; //titleObj.onclick=function(){self.close();} document.body.appendChild(msgObj); document.getElementById("msgDiv").appendChild(titleObj); var txt = document.createElement("div"); txt.style.margin = "1em 0" txt.setAttribute("id", "msgTxt"); txt.innerHTML = self.html; document.getElementById("msgDiv").appendChild(txt); } } function msgBox() { var dg = new dialog(); dg.html = "程序正在提交,请稍等!"; //dg.html+=""; dg.width = 200; dg.height = 100; dg.title = "标题"; dg.show(); } //是否为数字 function IsNum(val) { var re = /^[-\+]?\d+(\.\d+)?$/; if (!re.test(val)) { return false; } else { return true; } } function ConvertToMoney(strObj) { var result = strObj.replace(",", ""); return result; } function filterComboCustomerPress(gridObj, rowID, rowIndex, colIndex, filterVal, oldVal) { var combo = gridObj.getCustomCombo(rowID, colIndex); var comboArg = combo.getKeys(); var doCount = 0; for (var i = 0; i < comboArg.length; i++) { if (combo.get(comboArg[i]).toUpperCase().trim().indexOf(filterVal.toUpperCase()) == 0) { alert(combo.get(comboArg[i]).toUpperCase().trim()); gridObj.cellByIndex(rowIndex, colIndex).setValue(combo.get(comboArg[i])); gridObj.selectCell(rowIndex, colIndex, true, true, true, true); doCount = 1; break; } } } //两端去空格函数 String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); } function ReShowLabel(gridObj) { var columnCount = gridObj.getColumnsNum(); var rowCount = gridObj.getRowsNum(); if (rowCount > 0) { for (var i = 0; i < rowCount; i++) { for (var j = 0; j < columnCount; j++) { if (j == 1 || j == 2) { var cellCurVal = gridObj.cellByIndex(i, j).getValue(); gridObj.cellByIndex(i, j).setLabel(cellCurVal); } } } } } function clearNoNum(valObj) { //先把非数字的都替换掉,除了数字和. valObj = valObj.replace(/[^\d.]/g, ""); //必须保证第一个为数字而不是. valObj = valObj.replace(/^\./g, ""); //保证只有出现一个.而没有多个. valObj = valObj.replace(/\.{2,}/g, "."); //保证.只出现一次,而不能出现两次以上 valObj = valObj.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); return valObj; } function markStatusColor(gridObj) { var count = gridObj.getRowsNum(); for (var i = 0; i < count; i++) { var status = gridObj.cellByIndex(i, 0).getValue(); var rowId = gridObj.getRowId(i); } } //刷新应收 function refreshRecv() { doInitRecvGrid(); }