📄 wdmgrid_old.js
字号:
oOption.innerText = sOptText;
oOption.value = sOptValue;
//alert(this.rowsArr[i][j]+"aaa");
//alert(sOptValue+"bbb");
if(sOptValue==(this.rowsArr[i][j]+"")) {
//alert(this.rowsArr[i][j]);
oOption.selected = true;
}
else if(this.rowsArr[i][j]=="" && oOptions[m].selected) {
oOption.selected = true;
this.rowsArr[i][j] = oOption.value;
}
}
}
else { //如果document里没有对应名称的select元素,则根据字符串生成select元素
//根据rowTmpArr里的字符串生成options
var sTemp = this.rowTmpArr[j];
var sArr = sTemp.split("</option>");
if(sArr.length>0) {
sArr.splice(sArr.length-1,1);
var sOptValue = '';
var sOptText = '';
for(var k=0; k<sArr.length; k++) {
//alert(sArr[k]);
//得到option的value
var nStart = sArr[k].indexOf('value="')+7;
var nEnd = sArr[k].indexOf('"',nStart);
//alert(nStart+";"+nEnd);
if(nStart>7) {
sOptValue = sArr[k].substring(nStart, nEnd);
//alert(sOptValue);
}
//得到option的text
nStart = sArr[k].lastIndexOf('>');
nEnd = sArr[k].lastIndexOf('<option');
if(nStart>nEnd) {
sOptText = sArr[k].substr(nStart+1);
//alert(sOptText);
}
//创建option元素
var oOption = document.createElement("OPTION");
aElement.options.add(oOption);
oOption.innerText = sOptText;
oOption.value = sOptValue;
if(sOptValue==(this.rowsArr[i][j]+"")) {
//alert(this.rowsArr[i][j]+"eee");
oOption.selected = true;
}
else if(this.rowsArr[i][j]=="" && sArr[k].indexOf('="selected"')>-1) {
oOption.selected = true;
this.rowsArr[i][j] = oOption.value;
}
}
}
}
//设置select元素的onchange事件
sScript = this.strGridObjName + ".selectElementOnchange(this)";
aElement.onchange = new Function("x", "y", sScript);
}
else { //如果是text,checkbox,botton,radio
var sTemp = this.rowTmpArr[j];
//sTemp = sTemp.substr(0,sTemp.length-1) + " ";
//sTemp = sTemp + 'onKeyUp="' + this.strGridObjName + '.computeTable(this);" >';
aElement = document.createElement(sTemp); //
if(aElement.onkeyup==null)
aElement.onkeyup = new Function("x", "y", this.strGridObjName + ".computeTable(this)");
//if(this.rowsArr[i][j] == undefined) { this.rowsArr[i][j] = ""; }
aElement.value = this.rowsArr[i][j]; //设置输入框的值
}
if((aElement.name.toUpperCase())=="C_TRX_REF"){ //如果是itemseq列,做相应处理
aElement.value = i+1; //itemseq自动增加
this.rowsArr[i][j] = aElement.value;
this.itemSeqColumnNum = j;
}
if((aElement.name.toUpperCase())=="DELBTN"){ //如果是删除按钮
var sTemp = this.rowTmpArr[j];
sTemp = sTemp.substr(0,sTemp.length-1) + " ";
sTemp = sTemp + 'onclick="' + this.strGridObjName + '.deleteRow(\'' + (i+1) + '\');"' + '>';
aElement = document.createElement(sTemp);
}
if((aElement.name.toUpperCase())=="C_DELETE_FLAG#"){ //如果是删除标志
if(aElement.value=="1") { //如果做了删除操作,则将该行隐藏起来不显示
row.style.setAttribute("display","none");
//alert(row.style);
}
}
//设置名称,名称样式:businessdata/list[@type='SALESORDERDETAIL'][@rowNum='2']/SALESORDERDETAIL[@rowNum='1']/C_TRX_REF
//aElement.name = "businessdata/list[@type='" + this.dbTableName + "'][@rowNum='" + this.rowsArr.length + "']/" + this.dbTableName + "[@rowNum='" + i + "']/" + aElement.name + "";
aElement.name = "businessdata/list[@type='" + this.dbTableName + "']/" + this.dbTableName + "[@rowNum='" + i + "']/" + aElement.name + "";
//alert(aElement.name);
}
//为元素设置唯一ID,ID格式为:"表格对象名_行数_列数",行数和列数的下标从0开始
aElement.id = this.strGridObjName + "_" + i + "_" + j;
//向TD中插入HTML元素
//alert(aElement.type);
if(aElement.type!="hidden") {
var cell = row.insertCell();
cell.appendChild(aElement);
cell.className = "fb_result_head_2";
//alert(aElement.name);
}
else {
row.appendChild(aElement);
}
}
}
this.preRowsArrLen = this.rowsArr.length;
this.computeTotalsArray(); //计算汇总
this.doAfterDynamic();
}
//根据总线上的businessdata/list结点,动态创建this.rowsArr数组并生成html表格,用于初始化表格
function initBuildGrid() {
var oListItems = new Array(); //用于存放list/SALESORDERDETAIL的所有结点,行号-名称-值
var oAllItems = document.all; //得到document下的所有元素
var nRowNum = 0; //list的行数
//1.筛选出document中的所有list/*结点元素,并得到list/下所有结点的:行号-名称-值,存放到oListItems数组里
for(var i=0; i<oAllItems.length; i++) {
var oItem = oAllItems[i];
var sTemp = oItem.name;
if(sTemp == undefined) sTemp = "";
sTemp = sTemp.toUpperCase();
//对名称符合要求的元素进行处理,例如:<input type="hidden" name="list/SALESORDERDETAIL[@rowNum="1"]/SITEID" value="123">
var sListName = "LIST/" + this.dbTableNameInit.toUpperCase() + "[";
if(sTemp.substr(0,sListName.length)==sListName) {
var nameArray = sTemp.split("/"); //对hidden对象的name属性按/进行分割,list/SALESORDERDETAIL[@rowNum="1"]/SITEID
var item = new Array(3); //行号-名称-值,
item[0] = nameArray[1].split("\"")[1]; //行号,例如:SALESORDERDETAIL[@rowNum="1"]中的1
item[1] = nameArray[2]; //名称,例如:SITEID
item[2] = oItem.value; //值,例如:value="123"中的123
//得到最大行号
if(parseInt(item[0])>nRowNum) nRowNum = parseInt(item[0]);
//插入数组
oListItems.push(item);
}
}
if(oListItems.length>0) nRowNum++; //List的行数为最大行号加1
//alert(oListItems[0][0]+"|"+oListItems[0][1]+"|"+oListItems[0][2]);
//2.对oListItems数组里的元素进行排序(以this.rowTmpArr为模板),同时创建productsArray数组
for(var i=0; i<nRowNum; i++) {
var aRowArray = new Array(); //表示一行
for(var j=0; j<this.rowTmpArr.length; j++) {
var isMacth = false; //是否找到匹配项
var aElement = document.createElement(this.rowTmpArr[j]);
if(this.ioMapArr==null) { //如果没有输入输出映射,则按模板来对照
for(var k=0; k<oListItems.length; k++) {
//如果行号和名称都一至
if(parseInt(oListItems[k][0])==i && oListItems[k][1].toUpperCase()==aElement.name.toUpperCase()) {
aRowArray.push(oListItems[k][2]);
isMacth = true; //
break;
}
}
}
else { //如果有输入输出映射,则按映射来对照
if(this.ioMapArr[j] == undefined) this.ioMapArr[j] = "";
for(var k=0; k<oListItems.length; k++) {
//如果行号和名称都一至
if(parseInt(oListItems[k][0])==i && oListItems[k][1].toUpperCase()==this.ioMapArr[j].toUpperCase()) {
aRowArray.push(oListItems[k][2]);
isMacth = true; //
break;
}
}
}
if(!isMacth) { //如果没有找到匹配项,则补rowTmpArr中的缺省值
aRowArray.push(aElement.value);
}
}
this.rowsArr.push(aRowArray); //插入一行
//加入表格初始数组
var fieldsArrayInit = createArr(aRowArray);
this.rowsArrInit.push(fieldsArrayInit);
//alert(this.rowsArrInit[i][3]);
}
//alert(this.rowsArr[0][0]);
this.initRowsCount = this.rowsArr.length;
if(this.rowsArr.length>0) this.dynamicTable(true);
}
//锁定初始化的表格的行
function lockInitRows() {
for(var i=0; i<this.initRowsCount; i++) {
for(var j=0; j<this.rowTmpArr.length; j++) {
var obj = this.getElementObj(i,j);
if(obj.readOnly!=undefined) obj.readOnly = true;
if(obj.type=="button") obj.disabled = true;
}
}
}
//重新设置指定行的表格元素的名称,begin:开始行号, end:结束行名, 下标从0开始
function resetElementsName(begin, end) {
var sTemp = "";
for(var i=begin; i<=end; i++) {
for(j=0; j<this.rowTmpArr.length; j++) {
var aElement = document.getElementById(this.strGridObjName + "_" + i + "_" + j);
sTemp = aElement.name;
sTemp = sTemp.substr(sTemp.lastIndexOf("/")+1);
//alert(sTemp);
//aElement.name = "businessdata/list[@type='" + this.dbTableName + "'][@rowNum='" + this.rowsArr.length + "']/" + this.dbTableName + "[@rowNum='" + i + "']/" + sTemp + "";
aElement.name = "businessdata/list[@type='" + this.dbTableName + "']/" + this.dbTableName + "[@rowNum='" + i + "']/" + sTemp + "";
//alert(aElement.name);
}
}
}
//得到表格Grid数组
function getGridArr() {
return this.rowsArr;
}
//得到统计数组
function getTotalsArr() {
return this.totalsArr;
}
//得到表格行数
function getRowCount() {
return this.rowsArr.length;
}
//得到表格列数
function getColumnCount() {
return this.rowTmpArr.length;
}
//复制数组
function createArr(tmpArr) {
var newArr = new Array();
for(var i=0; i<tmpArr.length; i++) {
newArr.push(tmpArr[i]);
}
return newArr;
}
//根据x,y坐标定位到表格元素
function focus(x, y) {
document.getElementById(this.strGridObjName + "_" + x + "_" + y).focus();
}
//设置输入输出列名映射
function setFieldsNameMap(mapArr) {
this.ioMapArr = mapArr;
//alert(this.ioMapArr[20]);
}
//根据x,y坐标得到HTML表格元素
function getElementObj(x, y) {
return document.getElementById(this.strGridObjName + "_" + x + "_" + y);
}
//根据x,y坐标得到rowsArr数组中的元素
function getGridItemValue(x, y) {
return this.rowsArr[x][y];
}
//根据x,y坐标设置rowsArr数组中的元素
function setGridItemValue(x, y, value) {
this.rowsArr[x][y] = value;
}
//设置htmlTable表头的行数
function setTableHeadRowCount(rowCount) {
this.htmlTableHeadRowCount = rowCount;
}
//select元素onchange事件对应的函数
function selectElementOnchange(obj) {
var sID = obj.id;
var xy = sID.split("_");
var i=0;
var j=0;
i = xy[1];
j = xy[2];
var selectValue = "";
selectValue = obj.options(obj.selectedIndex).value;
this.rowsArr[i][j] = selectValue; //设置该输入框对应的数组元素,使它们保持一至
//alert(this.rowsArr[i][j]);
}
/* 定义明细表格对象TGrid ************结束***********************************************************************/
/* 实时验证函数 ************开始***********************************************************************/
function be_number()
{ //只能输入数字
/*
if(!(((window.event.keyCode>=48)&&(window.event.keyCode<=57))||(window.event.keyCode==45)||(window.event.keyCode==13)))
{
window.event.keyCode=0;
}
*/
if(!(((window.event.keyCode>=48)&&(window.event.keyCode<=57))||(window.event.keyCode==13)))
{
window.event.keyCode=0;
}
}
function be_float(oText)
{
if((((window.event.keyCode>=48)&&(window.event.keyCode<=57))||(window.event.keyCode==45)||(window.event.keyCode==13)||(window.event.keyCode==46)))
{
/*
if(window.event.keyCode==46) { //如果是小数点
re=/^\d{0,10}$/;
str=oText.value;
r=str.match(re);
if (r==null) { //如果前面已经有小数点,则不允许再次输入
window.event.keyCode=0;
}
if(str=="") { //如果小数点前没数字,则添零
oText.value = "0";
//window.event.keyCode=0;
}
}
else if(oText.value!=null && oText.value!="" && oText.value!="-"){
re=/^\d{1,10}$|\.\d{0,1}$/;
str=oText.value;
r=str.match(re);
if (r==null) { //如果小数点后已有两位数,则不允许再次输入
window.event.keyCode=0;
}
}
*/
if(window.event.keyCode==46 && oText.value.indexOf(".")>-1) { //如果是小数点
window.event.keyCode=0;
return;
}
str=oText.value+String.fromCharCode(window.event.keyCode);
if(str!="-" && str.substr(str.length-1,1)!=".") {
re = /^[-\+]?\d+(\.\d+)?$/;
r=str.match(re);
if(r==null) {
window.event.keyCode=0;
}
}
}
else {
window.event.keyCode=0;
}
}
/* 实时验证函数 ************结束***********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -