web框架分录表格本身是不支持单元格保存多个值的,某些场景下,需要实现类似多选的功能,那么则是在表格后面新增分录行数据,本身单元格还是保存的一个值,eg:分录组织列编辑器设置为一个多选f7,当用户选中多个组织时,对当前单元格保存一个值,然后把其他多选的值以新增分录行的形式添加进分录表格数据中,实际上就是一个f7值连带新增行数据的过程。实现思路:
(1)在单元格保存之前将多选的值保存到一个全局变量中,然后返回多选值(数组)中的最小索引值。
(2)在单元格保存之后,拿到存储当前多选值的变量,遍历数组,然后将值构造一个分录行数据Data,依次调用addRow方法。
(3)清空存储当前多选值的变量
代码如下:
单元格保存之前:
[code]editCellsaveBeforeEvent:function(rowid,cellname,value,iRow,iCol){
if(cellname!="compareValue"){
return value;//如果不是多选列直接返回
}
if(waf.isArray(value)){//如果当前列多选时value值是一个数组
for(var i =1;i
}
return value[0];//返回最小索引值
}
}[/code]单元格保存之后:
[code]editCellsaveAfterEvent:function(rowid,cellname,value,iRow,Col,oldValue){
if(entryOrgData.length>0){//如果变量中有值,一定是多选列
waf("#editGrid").wafGrid("setCell",rowid,"filterItem","or");//初始值其他单元格值(连带功能)
waf("#editGrid").wafGrid("setCell",rowid,"leftBracket","(");//初始值其他单元格值(连带功能)
waf("#editGrid").wafGrid("setCell",rowid,"rightBracket",null);//初始值其他单元格值(连带功能)
for(var i =0;i
if(i==0){
p={data:{compareValue:entryOrgData[i],property: "org.id",rightBracket:")",compareType: "=",filterItem:"and"},position:"after",src:rowid,afterAddRow:null,autoFocus:false};
}
waf("#editGrid").wafGrid("addRow",p);//在当前行后面新增分录数据
}
entryOrgData=[];//清空变量
}
}[/code]
推荐阅读