wang38361640 发表于 2013-1-23 02:20:53

用div构造的异步树

<%@page contentType="text/html; charset=UTF-8"%>
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.HashMap"%>
<%@page import="com.cnunisoft.uma.tableobject.TblOrganizationDto"%>
<%@page import="com.cnunisoft.uma.tableobject.TblAlarmconnectorDto"%>
<%@page import="com.cnunisoft.util.UtilTool"%>
<jsp:useBean id="localBean" scope="request" class="com.cnunisoft.uma.beans.LocalizationPackManager"/>
<jsp:useBean id="ptools" scope="request" class="com.cnunisoft.uma.action.ParameterTools"/>
<%
String mibDescUrl = (String)request.getAttribute("mibDescUrl");
%>
<html>
<head>
<title>

</title>
<LINK href="<%=request.getContextPath()%>/Resource/style/style1.css" type="text/css" rel="stylesheet">
<style type="text/css">
    body, td{
      font-size: 12px;
    }
    A:LINK, A:VISITED, A:ACTIVE, A:HOVER{
      font-size: 13px;
      padding-left: 3px;
      TEXT-DECORATION: NONE;
    }
</style>
<script src="<%=request.getContextPath()%>/Resource/Js/ajax.js" language="javascript" type="text/javascript"></script>
<script src="<%=request.getContextPath()%>/Resource/Js/common.js" language="javascript" type="text/javascript"></script>
<script type="text/javascript">
function checkTreeChar()
{
var digits="\\;'<>\";'.(,?@#$%//&^=+-|*)~`/";
var inString="";
inString=String.fromCharCode(window.event.keyCode);

if((inString.trim()).length>0){
    if (digits.indexOf(inString)!=-1)
    {
   // alert("你输入的字符包含非法字符\\;'<>\";'.(,?_@#$%//&^=+-|*)~`/,请重新输入!");
      alert("你输入的字符包含非法字符\;'<>\";'.(,?_@#$%//&^=+-|*)~`/,请重新输入!");
      return false;
    }
    else
    return true;
}
}
    //响应回车事件
   function SubmitKeyClick(button) {
      if (event.keyCode == 13){
      event.keyCode=9;
      event.returnValue = false;
      document.all.click();
      }
    }
function btnSearchNext_OnClick(val) {
      trimAllFiled(document.FormPar);
      if(val!=''){
            makeRequest("<%=request.getContextPath()%>/GlobalConfig/organizationAction.do?act=ajax&txt="+encodeURIComponent(val));
      }else{
       alert('<%=localBean.getResourceValue("query.content.is.null",request)%>');
       return;
    }
    }

function elementFocus(leafName,hrefName){
    var isElementFocus = document.all.txtElementFocus.value;//全局变量,用于保存之前哪一个叶节点被选中
    var isHrefFocus = document.all.txtHrefFocus.value;
    if(isElementFocus.length!=0){
     //用户选择过叶节点时,则要把该节点复原,再对当前选中的节点进行处理
//      var bfeDoc = eval("document.all." + isElementFocus);
//      bfeDoc.src = "<%=request.getContextPath()%>/Resource/Images/mztree/person.gif";
    }
    if(isHrefFocus.length!=0){
     //用户选择过叶节点时,则要把该节点复原,再对当前选中的节点进行处理
      var hrefDoc1 = eval("document.all." + isHrefFocus);
      hrefDoc1.style.color="#006699";
    }

    //对新点中的节点进行操作
    var doc = eval("document.all." + leafName);
//    doc.src = "<%=request.getContextPath()%>/Resource/Images/MIBIcon/MIBLeafS.gif";
    var hrefDoc = eval("document.all." + hrefName);
    hrefDoc.style.color="#FF6600";
    document.all.txtElementFocus.value = leafName;
    document.all.txtHrefFocus.value = hrefName;
}

function elementFocus2(leafName,hrefName){
   var isElementFocus = document.all.txtElementFocus.value;//全局变量,用于保存之前哪一个叶节点被选中
    var isHrefFocus = document.all.txtHrefFocus.value;
    if(isElementFocus.length!=0){
     //用户选择过叶节点时,则要把该节点复原,再对当前选中的节点进行处理
//      var bfeDoc = eval("document.all." + isElementFocus);
//   bfeDoc.src = "<%=request.getContextPath()%>/Resource/Images/mztree/person.gif";
    }
    if(isHrefFocus.length!=0){
     //用户选择过叶节点时,则要把该节点复原,再对当前选中的节点进行处理
      var hrefDoc1 = eval("document.all." + isHrefFocus);
      hrefDoc1.style.color="#006699";
    }

    //对新点中的节点进行操作
    var doc = eval("document.all." + leafName);
//    doc.src = "<%=request.getContextPath()%>/Resource/Images/MIBIcon/MIBLeafS.gif";
    var hrefDoc = eval("document.all." + hrefName);
    hrefDoc.style.color="#FF6600";
    document.all.txtElementFocus.value = leafName;
    document.all.txtHrefFocus.value = hrefName;
}

function changeNodeIconSubTree(name){
    var doc = eval("document.all." + name);
    var vsrc = doc.src;
//    alert("changeNodeIconSubTree" + vsrc);
    if(vsrc.indexOf("Tplus.png") != -1){
//   alert("1f");
      doc.src = "<%=request.getContextPath()%>/Resource/Images/tree/Tminus.png";
    }else if(vsrc.indexOf("Tminus.png") != -1){
//      alert("else if");
      doc.src = "<%=request.getContextPath()%>/Resource/Images/tree/Tplus.png";
    }
}

function changeNodeIcon(name){
    var doc = eval("document.all." + name);
    var vsrc = doc.src;
//   alert(name);
//    alert("vsrc = "+vsrc);
    if(vsrc.indexOf("Lplus.png") != -1){
      doc.src = "<%=request.getContextPath()%>/Resource/Images/tree/Tminus.png";
    }else if(vsrc.indexOf("Tminus.png") != -1){
      doc.src = "<%=request.getContextPath()%>/Resource/Images/tree/Lplus.png";
    }
}

//changeElementIcon
function changeElementIcon(name){
    var doc = eval("document.all." + name);
    var vsrc = doc.src;
//   alert("changeElementIcon"+ vsrc);
    if(vsrc.indexOf("folder.gif") != -1){
      doc.src = "<%=request.getContextPath()%>/Resource/Images/mztree/folderopen.gif";
    }else if(vsrc.indexOf("folderopen.gif") != -1){
      doc.src = "<%=request.getContextPath()%>/Resource/Images/mztree/folder.gif";
    }
}

function ExpandNode(ParentNode,ParentId){
var NodeX = eval(ParentNode.id + '_0');
// var divId = ParentNode +"_0";
// var NodeX= eval(divId);
//    var NodeX = eval("document.all."+ParentNode + '_0');

    if (NodeX.style.display == 'none')
    {
      NodeX.style.display="block";
      document.frames['hiddenframe'].location.replace("<%=request.getContextPath()%>/SubTreeForOrgnization.jsp?Pid=" + ParentId + "&PNode=" + ParentNode.id + "&mibDescUrl=<%=mibDescUrl%>");
      NodeX.loaded = 'yes';
    }
    else
    {
      NodeX.style.display='none';
    }
}

    function ExpandNode2(ParentNode,ParentId){

//   var NodeX = eval(ParentNode.id + '_0');
    var NodeX = eval("document.all."+ParentNode + '_0');

    if (NodeX.style.display == 'none')
    {
      NodeX.style.display="block";
      document.frames['hiddenframe'].location.replace("<%=request.getContextPath()%>/SubTreeForOrgnization.jsp?Pid=" + ParentId + "&id=ids&PNode=" + ParentNode + "&mibDescUrl=<%=mibDescUrl%>");
      NodeX.loaded = 'yes';
    }
    else
    {
      NodeX.style.display='none';
    }
}
   //查询树节点
    function plus_Click(Pid,PNode) {
//   PID=" + ParentId + "&PNode=" + ParentNode.id + "&mibDescUrl=<%=mibDescUrl%>"
//alert("plus_Click");
      if(Pid!=''){
//       alert("Pid");
          makeRequest("<%=request.getContextPath()%>/GlobalConfig/organizationAction.do?act=ajax&Pid="+ Pid+"&PNode="+PNode.id+"&mibDescUrl=mibDescUrl");
      }
    }

      function alertContents() {
          if (http_request.readyState == 4) {
            if (http_request.status == 200) {

            var res = http_request.responseXML;
            var Classes = res.getElementsByTagName("value");


            var path='';
            for(var i=0;i<Classes.length;i++)
            {
                path = Classes(i).getElementsByTagName("path").firstChild.nodeValue;
                if(path == 'blank'){
                  alert("<%=localBean.getResourceValue("not.find.node")%>");
                }else{
                // alert("您查找的节点可能在如下树路径上 请按如下顺序展开树\n"+path);
               //alert("path = "+path);
               path = replaceAll(path,'@','<br>');
               //<p>确定选用的节点 并按后面的提示路径即可找到所需的节点</p>
               alert_div('type',"<Strong><%=localBean.getResourceValue("alert.div.message")%></Strong><br>"+path);
                }
                // var paths = path.split("||");
                // for(j =0;j<paths.length;j++){
                //ExpandNode(Node_10,1);
                // var parentNode = paths.split(",").toString();
                // var id= paths.split(",").toString();
                // setTimeout("ExpandNode2('"+parentNode+"','"+id+"')",10*j);
                  }

            }
            }
      }
function replaceAll(str,oldStr,reStr){
    return str.split(oldStr).join(reStr);
}
//层的可以拖动调用的js方法
function f_mdown(obj)
{
    currentMoveObj = obj;      //当对象被按下时,记录该对象
    currentMoveObj.style.position = "absolute";
    relLeft = event.x - currentMoveObj.style.pixelLeft;
    relTop = event.y - currentMoveObj.style.pixelTop;
}
window.document.onmouseup = function()
{
    currentMoveObj = null;    //当鼠标释放时同时释放拖动对象
}
function f_move(obj)
{
    if(currentMoveObj != null)
    {
      currentMoveObj.style.pixelLeft=event.x-relLeft;
      currentMoveObj.style.pixelTop=event.y-relTop;
    }
}
      //--弹出div
var parameter;
var type;
function alert_div(type,parameter)
{
//获得鼠标当前X,Y坐标
var x,y;
if(!document.all)
{
x=pageX;
y=pageY;
}else{
x=0; //鼠标X轴的值
y=0; //鼠标Y轴的值
}
var sH = document.body.scrollHeight; //窗口的高度
var sW = document.body.scrollWidth+20; //窗口的宽度
var width=300 , height=200; //设置div的大小
if((x + width) >= sW) //当鼠标点击时的x坐标的值加上div的宽度大于窗口的宽度
{
   x = x - width;
}
var left=x+400 , top=y+5 ; //设置div的位置
var str="";
// 整个div的大小和位子
str+="<div id='div1' onmousedown='f_mdown(this)' onmousemove='f_move(this)' style='z-index:1;background-color:#E6EEFB;position:absolute;border:2px solid slategray;left:"+left+";top:"+top+";width:"+width+";height:"+height+";'>";
//--begin灰色top
str+="<div style='padding-bottom:2px;background-color: #6CA6E3;width:105%;height:16px;color:white;'>";
// 灰色div的设置
str+=" <div style='float:left;height:20px;overflow:hidden;margin:0px;padding:4px 0px 0px 5px;width:235;'><%=localBean.getResourceValue("search.tips")%></div>";
// 灰色div右侧的按钮
//str+=" <span style='width:14px;font-family:webdings;cursor:hand;'>0</span>";
str+=" <span style='width:14px;font-family:webdings;cursor:hand;float:right;' onclick='hide()'>r</span>";
str+="</div>";
//--end
//--begin白色div
str+="<div style=' margin:10px 5px 10px 10px;word-break:break-all;'>";
// 白色div中的信息
str+="<table cellpadding='0' cellspacing='1' border='0' class='border' align=left>";

str+="<tr><td> "+parameter+"</td></tr>";
str += "</table>";
str+="</div>";
//--end
str+="</div>";
//document.write(str);
document.body.insertAdjacentHTML("afterBegin",str);
document.getElementById('btnSearchNext').disabled = 'disabled';
}
//--关闭div
function hide()
{
document.getElementById( "div1").style.display = "none";
document.getElementById('btnSearchNext').disabled = '';
}

function test(){
alert("hello");
}
</script>

</head>
<body class="body">
<form name="FormPar" id="FormPar" action="">
    <table width="100%" height="100%" border="0" cellpadding="0" cellspacing="1">
    <tr>
      <%@include file="../../includeLeft.jsp"%>
      <td class="td-content" valign="top">
      <table border="0" cellpadding="2" cellspacing="1" class="form-table" width="100%" style="height:100%;">
          <tr>
            <td class="list-tr1" vAlign="top" width="30%">
            <div id="search" style="width:100%; height:25px; border:0px;">
                <%--在树中找:--%><%--查询--%>
                <%=localBean.getResourceValue("Organization.table.findintree",request)%><input type="text" name="txtSearch" size="10" onKeyPress="return checkTreeChar();" onKeyDown="SubmitKeyClick('btnSearchNext');"/><input type="button" class="button" value=" Go " name="btnSearch" id="btnSearch" style="display:none"/><input type="button" class="button" value="<%=localBean.getResourceValue("assetlistview.table.search")%>" name="btnSearchNext" id="btnSearchNext"/>
                <input type="hidden" name="oldSearch" />
                <input type="hidden" name="oldid" />
            </div>
            <div id="hide" style="display:none"></div>
            <div id=treeviewarea style="width:100%; height:97%; border:0px; overflow:auto; background-color: ">
            <iframe style="display:none" width="100%" height="100" id="hiddenframe"></iframe>
            <TABLE width="200%" border="0" style="scrolling:auto">
<TR>
<TD>
<%
// com.cnunisoft.uma.cmp.TblMibSessionFacade bean = mibTree.getBean();
// TblMibDto[] dtos = bean.tblMibFindByParentOid("1");//ptools
TblOrganizationDto[] dtos = (TblOrganizationDto[])request.getAttribute("dtos");
int i=10;
int children;
String ID = "";
String mainTree = "";
String leaf ="no";
for (int j = 0; j < dtos.length; j++)
{
children = dtos.length;
ID = dtos.getUidroleid();
%>
<input type="hidden" name="txtElementFocus"/>
<input type="hidden" name="txtHrefFocus"/>
<div style="height:92%;"id='Node_<%= i %>'><a
      <% if(children >0)
            {%>
                href="javascript:ExpandNode(Node_<%=i%>,<%=ID%>);javascript:changeNodeIcon('node<%=i%>');javascript:changeElementIcon('element<%=i%>')"><img name="node<%=i%>" src="<%=request.getContextPath()%>/Resource/Images/tree/Lplus.png" border="0"></a>
            <%;}
            else{%>
                ><img src="<%=request.getContextPath()%>/Resource/Images/MIBIcon/MIBLeaf.gif" border="0"></a><%;}%>
      <a class="hand"
      <% if (children >0)
                {%>
                  name='notmibheaf<%=i%>'    href="<%=request.getContextPath()%>/GlobalConfig/organizationAction.do?mainTree=<%=mainTree%>&DeptID=<%=dtos.getUidroleid()%>&leaf=<%=leaf%>%>" target="Edit"
                <%}%>
                ><img name="element<%=i%>" src='<%=request.getContextPath()%>/Resource/Images/mztree/root.gif' border='0' alt="">
                <%=dtos.getStrrolename()%></a>
</div>

<div id='Node_<%= i %>_0' style='display: none' >
      <%--正在加载 ...--%>
        <%=localBean.getResourceValue("MibTree.loding",request)%>
</div>
<%
i++;
}
%>
</TD>
</TR>
</TABLE>

            </div>
            </td>
            <td class="list-tr1" vAlign="top"><iframe id="Edit" name="Edit" src="<%=request.getContextPath()%>/GlobalConfig/organizationAction.do?mainTree=&from=&DeptID=<%=dtos.getUidroleid()%>" frameBorder="0" width="100%" style="height:100%;"></iframe>
            </td>
          </tr>
      </table>

      </td>
    </tr>
    <tr>
      <td height="30" colspan="3" class="copy"><%@include file="../../copyRight.jsp"%>
      </td>
    </tr>
</table>
</form>
<script type="text/javascript">
    ExpandNode(Node_<%=i-1%>,'<%=ID%>');
    changeNodeIcon('node<%=i-1%>');
    changeElementIcon('element<%=i-1%>');
</script>
</body>
</HTML>




//////////////////////////
下面是SubTreeForOrgnization.jsp
////////////////////////////////
<!-- SubTreeForOrgnization.jsp -->
<%@page contentType="text/html; charset=UTF-8"%>
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@page import="com.cnunisoft.uma.action.systemMonitor.config.*"%>
<%@page import="com.cnunisoft.uma.tableobject.*"%>
<%@page import="com.leagsoft.db.DatabaseService"%>
<%@page import="com.cnunisoft.util.UtilTool"%>
<%@page import="java.sql.*" %>
<%@page import="java.util.*"%>
<jsp:useBean id="ptools" scope="request" class="com.cnunisoft.uma.action.ParameterTools"/>
<jsp:useBean id="localBean" scope="request" class="com.cnunisoft.uma.beans.LocalizationPackManager"/>
<HTML>
<HEAD>
<html:base/>
<TITLE></TITLE>
</HEAD>
<%
String mainTree ="";
String leaf = "no";
String thisDomain = ptools.getCurrentDomainID();
String PID = request.getParameter("Pid");
       String sql = "select * from Tbl_Organization where (iRoletype='1' or iRoletype='3' or iRoletype='4') and uidParentRoleID = '"+PID+"'" +" order by strrolename";
       ArrayListlist= (ArrayList)DatabaseService.getInstance().queryDataByKeys(sql,TblOrganizationDto.class);
       //begin
      TblOrganizationDto[] dtos_allOrg=(TblOrganizationDto[])ptools.invokeSessionBeanMethod("TblOrganization", "tblOrganizationFindAllSubRole",
             new Class[]{String.class}, new Object[]{new String("1")});
         String uidUserGroupID = ptools.getUserGroupID(request);
   if(!ptools.isAdministrators(uidUserGroupID)){
   TblOperatorgroupDto[] deptDtos = (TblOperatorgroupDto[])ptools.invokeSessionBeanMethod(
   "TblOperatorgroup",
   "tblOperatorgroupFindByTypeAndID",
   new Class[]{int.class, String.class},
   new Object[]{new Integer(1), uidUserGroupID});

   List filter = new ArrayList();
   for(int i = 0; i < deptDtos.length; i++){
       filter.add(deptDtos.getStrdevDeptNet());
   }
   ArrayList list2 = new ArrayList();
   //过滤没有权限的
      for(int i = 0; i < dtos_allOrg.length; i++){
      if("1".equals(dtos_allOrg.getUidroleid()) || filter.contains(dtos_allOrg.getUidroleid())){
          if (!list2.contains(dtos_allOrg)) {
            list2.add(dtos_allOrg);
          }
          if (!"1".equals(dtos_allOrg.getUidparentroleid())) {
            for (int j = 0; j < dtos_allOrg.length; j++) {
            if (UtilTool.objectEquals(dtos_allOrg.getUidparentroleid(), dtos_allOrg.getUidroleid())) {
                if (!list2.contains(dtos_allOrg)) {
                  list2.add(dtos_allOrg);
                }
                continue;
            }
            }
          }
      }
      }
      dtos_allOrg = new TblOrganizationDto;
      dtos_allOrg = (TblOrganizationDto[])list2.toArray(dtos_allOrg);
   }
//end过滤没有权限的

//筛选 对所有有权限的uidRoleId与 所取到的当前结点下的uidRoleId集,进行对比, 最终筛选取出当前结点下所有的uidRoleId且具备权限访问的集合,用一个样的新的集合list8保存起来
ArrayListlist8 = new ArrayList();
for(int i=0;i<list.size();i++){
   for(int j = 0;j<dtos_allOrg.length;j++){
          if(((TblOrganizationDto)list.get(i)).getUidroleid().equals(dtos_allOrg.getUidroleid())){
         list8.add((TblOrganizationDto)list.get(i));
          }
   }
}

//离职员工放到最下面
int num_leaver = 0;
int num_unknow = 0;
TblOrganizationDto last_1 = null;
TblOrganizationDto last_2 = null;
TblOrganizationDto last_3 = null;
String strCurDomainID = ptools.getCurrentDomainID();
//if("1".equals(PID)){//对于根结点下的离职员工未知部门下级管理域
   for(int j = 0;j<list8.size();j++){
       if(((TblOrganizationDto)list8.get(j)).getUidroleid().equals("2") || ((TblOrganizationDto)list8.get(j)).getUidroleid().equals( ((TblOrganizationDto)list8.get(j)).getUiddomainid()+"2") ){//表Tbl_Organization中uidroleid为2,代表离职员工
       last_1= (TblOrganizationDto)list8.get(j);
//       list8.remove(last_1);
   }
   if(((TblOrganizationDto)list8.get(j)).getUidroleid().equals("0") ||((TblOrganizationDto)list8.get(j)).getUidroleid().equals(((TblOrganizationDto)list8.get(j)).getUiddomainid()+"0")){//表Tbl_Organization中uidroleid为0,代表未知部门
   last_2= (TblOrganizationDto)list8.get(j);
//   list8.remove(last_2);
   }
   if(((TblOrganizationDto)list8.get(j)).getIroletype().intValue()== 3){//表Tbl_Organization中iRoleType为3,代表下级管理域
   last_3= (TblOrganizationDto)list8.get(j);
//   list8.remove(last_3);
}
}//end for
//}//end if
if(last_3 != null){list8.remove(last_3);}
if(last_2 != null){list8.remove(last_2);}
if(last_1 != null){list8.remove(last_1);}

list = list8;

if(last_3 != null){list.add(last_3);}
if(last_2 != null){list.add(last_2);}
if(last_1 != null){list.add(last_1);}
       //
       Object[] dtos_Org = null;
       Object[] dtos_Alarm = null;
       dtos_Org = new TblOrganizationDto;
       dtos_Org = (TblOrganizationDto[])list.toArray(dtos_Org);

       String sql_Alarm = "";
       ArrayList list_user = null;

       //
       String sq = "select * from Tbl_MgmDomaininfo where uidParentDomainID is not null";
       ArrayList li = (ArrayList)DatabaseService.getInstance().queryDataByKeys(sq,TblMgmdomaininfoDto.class);
       if(li.size() >0 ){
         for(int a = 0;a<li.size();a++){
         String domain = ((TblMgmdomaininfoDto)li.get(a)).getUiddomainid();
      if(PID.equals(domain+"2")){//下级的离职员工
          sql_Alarm = "select * from Tbl_Alarmconnector where uidRoleIDin(select uidRoleID+'2' from Tbl_Organization where uidDomainID='"+domain+"') and uidUserID!='0' and sStatus != '-1'";
         list_user= (ArrayList)DatabaseService.getInstance().queryDataByKeys(sql_Alarm,TblAlarmconnectorDto.class);
         dtos_Alarm = newTblAlarmconnectorDto;
         dtos_Alarm = (TblAlarmconnectorDto[])list_user.toArray(dtos_Alarm);
         break;
      }

      else if(!PID.equals("2")){
         sql_Alarm = "select * from Tbl_Alarmconnector where uidUserID!='0' and sStatus != '-1' and uidRoleID ='"+PID+"'" + " order by strUserName";
         list_user= (ArrayList)DatabaseService.getInstance().queryDataByKeys(sql_Alarm,TblAlarmconnectorDto.class);
         dtos_Alarm = newTblAlarmconnectorDto;
         dtos_Alarm = (TblAlarmconnectorDto[])list_user.toArray(dtos_Alarm);
       }else{// 离职员工
         sql_Alarm = "select * from Tbl_Alarmconnector where uidUserID!='0' and sStatus = '-1' "+ " order by strUserName";
         list_user= (ArrayList)DatabaseService.getInstance().queryDataByKeys(sql_Alarm,TblAlarmconnectorDto.class);
         dtos_Alarm = newTblAlarmconnectorDto;
         dtos_Alarm = (TblAlarmconnectorDto[])list_user.toArray(dtos_Alarm);
       }
       }
   }
   else{
         sql_Alarm = "select * from Tbl_Alarmconnector where uidUserID!='0' and sStatus != '-1' and uidRoleID ='"+PID+"'" + " order by strUserName";
         list_user= (ArrayList)DatabaseService.getInstance().queryDataByKeys(sql_Alarm,TblAlarmconnectorDto.class);
         dtos_Alarm = newTblAlarmconnectorDto;
         dtos_Alarm = (TblAlarmconnectorDto[])list_user.toArray(dtos_Alarm);
   }

//       String sql_Alarm = "select * from Tbl_Alarmconnector where uidUserID!='0' and sStatus != '-1' and uidRoleID ='"+PID+"'" + " order by strUserName";



       String ParentNode = request.getParameter("PNode");
       String strUnimon = request.getContextPath();
       int i = 0,j = 0;
       String nSpace="";
            j= ParentNode.length()- ParentNode.replaceAll("_","").length();
            for (i=0;i<j;i++)
            nSpace = nSpace + "<img src='"+ strUnimon +"/Resource/Images/tree/blank.png' border='0'>";
            String sHTML ="";

         String[] ids = new String;
         String eachPid = "";
          Map subNodeMap = new HashMap();
for (int count = 0; count < dtos_Org.length; count++) {//对当前结点下取出的 Tbl_Organization表中 的记录集进行判断,其是否还有下级部门域,采用HashMap的方式保存存起来,格式为 put(uidRoleID,下级部门域个数)
if( list.size()>0 ){
ids = ((TblOrganizationDto)dtos_Org).getUidroleid();
eachPid = ((TblOrganizationDto)dtos_Org).getUidroleid();
sql = "select * from Tbl_Organization where iRoleType='1' and uidParentRoleID = '"+eachPid+"'";
ArrayList list3= DatabaseService.getInstance().queryDataByKeys(sql,TblOrganizationDto.class);
if(list3.size()<1){
    if(eachPid.equals("2")){//离职员工在Tbl_Alarmconnector表离职员工的标识为 sStatus = '-1'
   sql = "select * from Tbl_Alarmconnector wheresStatus = '-1'";
   list3= DatabaseService.getInstance().queryDataByKeys(sql,TblAlarmconnectorDto.class);
   subNodeMap.put(eachPid,(Object)(new Integer(list3.size())));
    }
    else {
      sql = "select * from Tbl_Alarmconnector where uidRoleID = '"+eachPid+"'" +"and sStatus != '-1'";
      list3= DatabaseService.getInstance().queryDataByKeys(sql,TblAlarmconnectorDto.class);
      subNodeMap.put(eachPid,(Object)(new Integer(list3.size())));
    }

}
else{
   subNodeMap.put(eachPid,(new Integer(list3.size())));
}

}
else{
    eachPid = ((TblAlarmconnectorDto)dtos_Org).getUidroleid();
    subNodeMap.put(eachPid,(Object)(new Integer(0)));
}

}

for(int a = 0;a<li.size();a++){
   String domain = ((TblMgmdomaininfoDto)li.get(a)).getUiddomainid();
   for (int f = 0; f < dtos_Org.length; f++){
   String tempPID = ((TblOrganizationDto)dtos_Org).getUidroleid();
    if(tempPID.equals(domain+"2")){
   sql = "select * from Tbl_Alarmconnector where uidRoleIDin(select uidRoleID from Tbl_Organization where uidDomainID='"+domain+"') and uidUserID!='0' and sStatus != '-1'";
   ArrayList list3= DatabaseService.getInstance().queryDataByKeys(sql,TblAlarmconnectorDto.class);
   subNodeMap.put(tempPID,(Object)(new Integer(list3.size())));
   break;
   }
   }
}

String ID = "";
String IDTemp;
String name ="";
Number subCount = null;
i = 0;
   for (int f = 0; f < dtos_Org.length; f++)
   {
   String alarmUrl2 = null;
   if(list.size()>0){
      ID=((TblOrganizationDto)dtos_Org).getUidroleid();
   }


      String nameID = ID.replace("-","");//这样处理就没js错误(如果uidRoleId中包含-或.会有js错,原因还未知)
      nameID = nameID.replace(".","");//这样处理就没js错误
      nameID += f;
   subCount = (Number)subNodeMap.get(((TblOrganizationDto)dtos_Org).getUidroleid());
   int children=subCount != null ? subCount.intValue() : 1;
      sHTML = sHTML + "<div style='height:100%;' id='" + ParentNode + "_" + (i + 1) + "'>" + nSpace ;
      if (children >0){//确定是否有子节点
      sHTML = sHTML + "<a href=\"+\"javascript:ExpandNode("+ ParentNode + "_" + (i + 1)+",'" + ID + "');javascript:changeNodeIconSubTree('node"+nameID+"');javascript:changeElementIcon('element"+nameID+"')\"+\"><img name='node"+nameID+"'"+" src='"+ strUnimon +"/Resource/Images/tree/Tplus.png' border='0'></a>\\n";
      }
      else{
      String getUidroleid_1="";
      String getUiduserid="";
      if(list.size()>0){
               getUidroleid_1 = ((TblOrganizationDto)dtos_Org).getUidroleid();
               getUiduserid = ((TblOrganizationDto)dtos_Org).getStrrolename();
             }
      String alarmUrl = request.getContextPath()+"/GlobalConfig/organizationAction.do?mainTree="+mainTree+"&act=user&DeptID="+getUidroleid_1+"&UserID="+getUiduserid+"&userroleid="+getUidroleid_1+"&from=1";
      if(dtos_Org instanceof TblOrganizationDto){
      //对于Tbl_Organization 表中的页结点
      alarmUrl = request.getContextPath()+"/GlobalConfig/organizationAction.do?mainTree="+mainTree+"&DeptID="+((TblOrganizationDto)dtos_Org).getUidroleid()+"&leaf=yes";
      }
      alarmUrl2 = alarmUrl;
      if(list.size()>0 && dtos_Org instanceof TblOrganizationDto){
          sHTML = sHTML + "<a href='"+alarmUrl+"' target='Edit'><img src='"+ strUnimon +"/Resource/Images/tree/Tminus.png' border='0'></a>\\n";
      }
      }
      sHTML = sHTML;
      String iconName = null;//mibTree.getNodeIconName(dtos); 保留,以后再做
      if (children >0){
      iconName = "folder.gif";
      if(!thisDomain.equals(((TblOrganizationDto)dtos_Org).getUiddomainid())){//不是本级管理域
         iconName = "folder.png";
      }
      String getUidroleid ="";
      String getStrrolename="";
            if(list.size()>0){
               getUidroleid = ((TblOrganizationDto)dtos_Org).getUidroleid();
               getStrrolename = ((TblOrganizationDto)dtos_Org).getStrrolename();
             }

      String url = request.getContextPath()+"/GlobalConfig/organizationAction.do?mainTree="+mainTree+"&DeptID="+getUidroleid+"&leaf=yes";
      sHTML = sHTML + "<aname='notleafhref"+nameID+"'"+" onclick=\"+\"elementFocus('notmibLeaf"+nameID+"',this.name)\"+\"   href='"+url+"' target='Edit'";
      sHTML = sHTML + "><img name='element"+nameID+"'"+" src='"+ strUnimon +"/Resource/Images/mztree/" + iconName + "' border='0'>" +getStrrolename+ "</a></div>";
      }else{
      iconName = "folder.gif";
         if(!thisDomain.equals(((TblOrganizationDto)dtos_Org).getUiddomainid())){//不是本级管理域
         iconName = "folder.png";
      }
      String else_getUidroleid ="";
          if(list.size()>0){
               else_getUidroleid = ((TblOrganizationDto)dtos_Org).getUidroleid();

             }
      sHTML = sHTML + "<a name='notleafhref"+nameID+"'"+" onclick=\"+\"elementFocus('notmibLeaf"+nameID+"',this.name)\"+\" href='"+alarmUrl2+"' target='Edit'";
      if(list.size()>0){
         name = ((TblOrganizationDto)dtos_Org).getStrrolename();
      }
      sHTML = sHTML + "><img name='mibLeaf"+nameID+"'"+" src='"+ strUnimon +"/Resource/Images/mztree/" + iconName + "' border='0'> " + name + "</a></div>";
      }

      if (children >0)
      // "  正在加载 ...</div>"
      {
          sHTML = sHTML + "<div id='" + ParentNode + "_" + (i + 1) + "_0' style='display: none' loaded='no'>" + nSpace +
                  localBean.getResourceValue("SubTree.loding", request);
      }
      i++;
      }
%>


<%-- 对表tbl_alarmConnector查出的记录添加进树此表的所有记录都为叶节点,无需太多的复杂处理--%>
<%
   for (int f = 0; f < dtos_Alarm.length; f++)
   {
   String alarmUrl2 = null;
       ID=((TblAlarmconnectorDto)dtos_Alarm).getUidroleid();
       subCount = (Number)subNodeMap.get(((TblAlarmconnectorDto)dtos_Alarm).getUidroleid());

      String nameID = ID.replace("-","");
      nameID += f;

//      int children=subCount != null ? subCount.intValue() : 1;
      sHTML = sHTML + "<div style='height:100%;' id='" + ParentNode + "_" + (i + 1) + "'>" + nSpace ;
      String getUidroleid_1="";
      String getUiduserid="";

      getUidroleid_1 = ((TblAlarmconnectorDto)dtos_Alarm).getUidroleid();
      getUiduserid =((TblAlarmconnectorDto)dtos_Alarm).getUiduserid();


      String alarmUrl = request.getContextPath()+"/GlobalConfig/organizationAction.do?mainTree="+mainTree+"&act=user&DeptID="+getUidroleid_1+"&UserID="+getUiduserid+"&userroleid="+getUidroleid_1+"&from=1";

      alarmUrl2 = alarmUrl;

      sHTML = sHTML + "<a href='"+alarmUrl+"' target='Edit'><img src='"+ strUnimon +"/Resource/Images/tree/Tminus.png' border='0'></a>\\n";


      sHTML = sHTML;
      String iconName = null;//mibTree.getNodeIconName(dtos); 保留,以后再做

      iconName = "person.gif";
      String else_getUidroleid ="";

      else_getUidroleid = ((TblAlarmconnectorDto)dtos_Alarm).getUidroleid();

      sHTML = sHTML + "<a name='leafhref"+nameID+"'"+" onclick=\"+\"elementFocus('mibLeaf"+nameID+"',this.name)\"+\" href='"+alarmUrl2+"' target='Edit'";

      name = ((TblAlarmconnectorDto)dtos_Alarm).getStruserdes();

      sHTML = sHTML + "><img name='mibLeaf"+nameID+"'"+" src='"+ strUnimon +"/Resource/Images/mztree/person.gif' border='0'> " + name + "</a></div>";
      i++;
      }
%>


<BODY>
<script type="text/javascript">
    var x = eval('parent.' + '<%= ParentNode + "_0"%>') ;
    x.innerHTML="<%=sHTML%>";
</script>
</BODY>
</HTML>
<%
       String pid = request.getParameter("id");
       if(true){ %>
       <script type="text/javascript">
    //    ExpandNode2(Node_10_4,6fc609da-0000-b000-8000-000c29336d12);
    //      parent.test();
      </script>
       <%
       }
%>
页: [1]
查看完整版本: 用div构造的异步树