当新增记录时,能否根据设置,一下子新增好多行?
|
twodream
2007-08-31
并且能够设置其中的一些行的单元格合并?
|
|
|
twodream
2007-09-05
twodream 写道 并且能够设置其中的一些行的单元格合并?
问题已经解决!解决方法: 使用extendRow,形如: <td nowrap="nowrap" class="saveTool"> <nobr> <img src="<%=path %>/images/subscribe_add.gif" onclick="ECSideUtil.addToMultiGrid(this, 'ec_add_template', 'ec', <%=allKpis.size()%>, 1, '<%=param%>');" title="新增" style="CURSOR:hand"/> </nobr> </td> 其中addToMultiGrid方法是对ECSide的方法的重写,内容如下: ECSideUtil.addToMultiGrid = function(buttonObj, templateId, formid, numCount, colIndex, params){ // 获取单元格控件值 paramsArray = params.split(NPConstants.RECORD_SPLIT); if(paramsArray.length > 0 && paramsArray.length != numCount){ alert("赋值参数同要生成的单元格不匹配!"); return; } colIndex = colIndex - 1; if(colIndex < 0){ alert("起始行号为1,请正确设置!"); return; } var ecsideObj = ECSideUtil.getGridObj(formid); var template = document.getElementById(templateId); // 使用ECSide默认的增加模板 if (!template){ template= document.getElementById(ECSideConstants.DEFALUT_ADD_TEMPLATE); } template = template.value; template = template.split("<tpsp />"); // 增加模板分拆 var rowsNumOra = 0; if (ecsideObj.ECListBody.rows){ rowsNumOra = ecsideObj.ECListBody.rows.length; } var rowsNum = rowsNumOra - 1; var flag = 1; // 增加指定的行数记录 for(var n = 0; n < numCount; n++){ var paramValue = paramsArray[n].split(NPConstants.FIELD_SPLIT); rowsNum = rowsNum + 1; var newTr = ecsideObj.ECListBody.insertRow(rowsNum); ECSideUtil_addEvent( newTr,"click", ECSideUtil.selectRow.bind(this,newTr,ecsideObj.id) ); newTr.className = "add"; var cells = []; for (var i=0;i<ecsideObj.columnNum;i++ ){ cells[i] = newTr.insertCell(i); if(i == colIndex){ if(flag == 1){ var temp = ""; //temp = template[i]; // 控件不赋值 temp = setCellFieldValue(template[i], paramValue[i]); // 控件赋值 cells[i].innerHTML = temp; // cells[i]为td对象 flag = 0; }else{ var temp = changeToHidden(template[i]); cells[i].innerHTML = temp; // 合并的单元格增加隐藏控件,值为空字符 } }else{ var temp = ""; //temp = template[i]; temp = setCellFieldValue(template[i], paramValue[i]); cells[i].innerHTML = temp; // cells[i]为td对象 } } var topTr = ECSideUtil.getPosTop(newTr); if (ecsideObj.ECListBodyZone){ ecsideObj.ECListBodyZone.scrollTop=topTr; } } mergeGrid(colIndex+1, colIndex+1, rowsNumOra+1, rowsNum+1, ecsideObj.ECListBody); // 合并单元格 } |

