本站不再更新,欢迎光临 java开发技术网
随笔-230  评论-230  文章-8  trackbacks-0

在action中使用sql按目录的方式查询出部门记录,其中包括部门名称,部门ID,部门父ID。顶头的记录的部门父ID必须为-1,查询语句如:
select dept_id,dept_name,parent_id from info_dept connect by prior dept_id = parent_id start with dept_id=?

把获得的list记录set到request中,在页面中显示出来。
页面代码如下:

< link  href ="<%=request.getContextPath()%>/gdnumweb/css/dtree.css"  rel ="stylesheet"  type ="text/css" >
< body >
< script  type ="text/javascript"  src ="<%=request.getContextPath()%>/gdnumweb/js/dtree.js" ></ script >

< div  class ="dtree" >
< p >< href ="javascript: tree.openAll();" > 展开所有 </ a >  |  < href ="javascript: tree.closeAll();" > 关闭所有 </ a ></ p >
< script  language ="javascript"  type ="text/javascript" >
tree 
=   new  dTree('tree');
< logic:iterate id = " dept "  name = " list " >
  tree.add(
" <bean:write name= " dept "  property= " dept_id " /> " , " <bean:write name= " dept "  property= " parent_id " /> " , " <bean:write name= " dept "  property= " dept_name " /> " ,' <%= path %>/ gdnumUserDept. do ? method = getDeptUserInfo & deptNo =< bean:write name = " dept "  property = " dept_id " /> ','','mainframe');
</ logic:iterate >
document.write(tree);
</ script >

在组合框中输出树形目录
获取列表的java方法
//提取当前用户的部门下拉
  public List getSourceDept(String deptNo) {
    List list 
= null;
    Connection con 
= CommonUtils.currentSession().connection();
    ResultSet rs 
= null;
    ResultSetMetaData rsmd 
= null;
    java.sql.PreparedStatement ps 
= null;
    String sql 
= "select deptno,(tools.buildTree(level)||deptname) deptname from sys_dept "
        
+ "connect by parent_deptno=prior deptno "
        
+ "start with deptno=?";
    HashMap map 
= null;
    
try {
      ps 
= con.prepareStatement(sql);
      ps.setString(
1, deptNo);
      rs 
= ps.executeQuery();
      
//System.out.println("rs.size:" + rs.getFetchSize());
      rsmd = rs.getMetaData();
      list 
= new ArrayList();
      
while (rs.next()) {
        map 
= new HashMap();
        
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
          map.put(rsmd.getColumnName(i).toLowerCase(), rs.getString(i));
        }
        list.add(map);
      }
      rs.close();
    }
    
catch (Exception ex) {
      log.error(
"提取当前用户的部门下拉出错com.unicom.gzmas.reports.bo.getSourceDept:" + ex);
    }
    
finally {
      CommonUtils.closeSession();
    }
    
return list;
  }

页面输出的代码
    <select id="mbackdept"> <!-- 部门 -->
          
<option value="all">-----全部----</option>
          
<logic:iterate id="l" name="target">
          
<option value="<bean:write name="l" property="deptno"/>"><bean:write name="l" property="deptname"/></option>
          
</logic:iterate>
    
</select>
构造树的存储过程
  /*构造树*/
    
Function Buildtree(In_Level In NumberReturn Varchar2 As
        Result 
Varchar2(4000);
    
Begin
        
If In_Level = 1 Then
            
Return Null;
        
End If;
        
Return '|' || Incstring('-­', (In_Level - 1* 2);
    
End;
posted on 2007-01-26 14:18 有猫相伴的日子 阅读(7807) 评论(6)  编辑  收藏 所属分类: j2ee

评论:
# re: 使用dTree生成部门目录树 2007-04-13 09:26 | tyb
看了N多,就觉得你写的最好了,举例说明问题是我最喜欢的,谢谢啦  回复  更多评论
  
# re: 使用dTree生成部门目录树 2007-04-15 00:10 | 有猫相伴的日子
常用的东西,希望对大家有所帮助了,欢迎大家多光临俺的了小blog,我文笔不好,只写例子,加以简单文字说明  回复  更多评论
  
# re: 使用dTree生成部门目录树 2007-05-19 22:06 | dtree问题请教
楼主对这个dtree.jsp能看懂吗
有几个问题想请教一下  回复  更多评论
  
# re: 使用dTree生成部门目录树 2007-08-07 10:30 | 4
看不懂 能不能提供源代码下载阿 谢谢  回复  更多评论
  
# re: 使用dTree生成部门目录树 2008-10-06 10:06 | zlm
真的很不错!  回复  更多评论
  
# re: 使用dTree生成部门目录树 2009-02-23 15:16 | 轻轻轻轻轻轻轻轻
楼主 数据库用的oracle吧?
问一下在sql server2000中能用sql语句生成树么?
  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
本站不再更新,欢迎光临 java开发技术网