|

楼主 |
发表于 2013-12-4 09:10:10
|
显示全部楼层
实现树形的多级编号
本例要实现
界面上放grdMain,关联dataMain
dataMain的tree-option树形设置如下图所示
fFID是父关系
node-level-relation是节点级次关系,grid组件自动维护该关系的值
fBM是编码
下面是代码- var selectedid, selectedParentID, selectedCode, selectedLevel="";
- mainActivity.dataMainBeforeNew = function(event){
- //这里取到的是新增前选中的行的信息
- selectedid = event.source.getID();
- selectedParentID = event.source.getValue("fFID");
- selectedCode = event.source.getValue("fBM");
- selectedLevel = event.source.getValue("fNodeLevel");
- };
- mainActivity.dataMainAfterNew = function(event){
- var maxCode="";
- var newLevel = event.source.getValue("fNodeLevel");
- if(newLevel == 0){//新建根
- maxCode = mainActivity.getNodeMaxCode("");
- }else if(newLevel == selectedLevel){//新建同级
- maxCode = mainActivity.getNodeMaxCode(selectedParentID);
- }else if(newLevel > selectedLevel){//新建子
- maxCode = mainActivity.getNodeMaxCode(selectedid);
- }
- event.source.setValue("fBM", maxCode);
- };
- mainActivity.getNodeMaxCode = function(parentID){
- var maxCode="";
- //获取这个父节点下的所有子
- var rows = justep.xbl("grdMain").grid.getSubItems(parentID);
- if(rows){
- rows = rows.split(",");
- if(rows.length==1){
- maxCode = selectedCode + "001";
- }else{
- for(var id in rows){
- if(maxCode < justep.xbl("dataMain").getValue("fBM",rows[id])){
- maxCode = justep.xbl("dataMain").getValue("fBM",rows[id]);
- }
- }
- var len = maxCode.length;
- var maxCodeLeft = maxCode.substr(0, len-3);
- var maxCodeRight = maxCode.substr(len-3, 3);
- maxCodeRight = justep.String.zeros(justep.String.toInt(maxCodeRight, 0) + 1,3);
- maxCode = maxCodeLeft+maxCodeRight;
- }
- }
- return maxCode;
- }
复制代码 |
|