当新增记录时,能否根据设置,一下子新增好多行?

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); // 合并单元格

}