Q:下拉框控件实现树形用户选择
A:
根据直接领导关系产生的,用了递归函数。 由于在固定资产管理中经常要将资产分类,特做了这个函数,共享之。
效果如图:
如下代码直接贴进 下拉框选项脚本即可
代码如下:- function createLayeredCategory(domainid,opts,id,level)
- {
- var sql="SELECT a.id item_id,a.NAME item_name,'"+getDomainid()+"' domainid,COUNT(*) cnt FROM obpm.t_user a left join obpm.t_user b ";
- sql=sql+"on a.id=b.superior where a.superior='"+id+"' GROUP BY a.id,a.name ORDER BY cnt";
- var datas = queryBySQL(sql);
- var rec=null;var str="|"; var id="";
- for(var it = datas.iterator();it.hasNext();){
- rec = it.next();str="";
- if(level>1 && level<3) str = str +"&"+"n"+"b"+"s"+"p"+";"+"&"+"n"+"b"+"s"+"p"+";"+"&"+"n"+"b"+"s"+"p"+";"+"&"+"n"+"b"+"s"+"p"+";"+"|--";
- else if(level>2){
- str = "";
- for (var count=0;count<level-1;count++) {
- str = str+"&"+"n"+"b"+"s"+"p"+";"+"&"+"n"+"b"+"s"+"p"+";"+"&"+"n"+"b"+"s"+"p"+";"+"&"+"n"+"b"+"s"+"p"+";"+"|";
- }
- str += "--";
- }else str="|--";
- str += rec.getItemValueAsString("name");
- id = rec.getItemValueAsString("id");
- opts.add(str,id); //println(id+str);
- createLayeredCategory(domainid,opts,id,level+1);
- }
- }
- var domainid = getDomainid();
- var datas =queryBySQL("SELECT id item_id,superior item_idp,NAME item_name,'" + domainid +"' domainid FROM obpm.t_user where superior is null or superior=''");
- var opts=$TOOLS.createOptions();
- for(var iter = datas.iterator();iter.hasNext();){
- doc = iter.next();
- opts.add(doc.getItemValueAsString("name"), doc.getItemValueAsString("id"));
- createLayeredCategory(domainid,opts,doc.getItemValueAsString("id"),1);
- }
- opts;
复制代码 |