三级联动 文档和代码

三级联动 文档和代码

 

如人员管理的对应的界面和代码

其涉及的文件有adminuser_list.jsp web.xmlSelectCropDepartServlet2.javaSelectDepartChuServlet.java 两个Servlet类文件。

其对应的adminuser_list.jsp 文件如下。

<%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*" errorPage="" %>

<%@ page import ="pub.*" %>

<%

    int xxxx=Check.CheckPage(request,"admin_adminuser_list");

    String Error="";

    if (xxxx==1){

       Error="<script>alert('你已掉线,需要重新登陆!');top.location.href='../login.jsp'</script>";

    }else{

       if (xxxx==2){

           Error="<script>alert('你无权进入该页面!');history.back();</script>";

       }

    }

%>

<%=Error%>

<%

   if (xxxx!=0){

        return;

    }

%>

 

 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gbk">

<title>机构类型设置人员管理</title>

<link href="../css/putong.css" type="text/css" rel="stylesheet">

</head>

<script language="javascript">

   var req;

    var number='all'; //,下拉框可显示全部部门&

    window.οnlοad=function()

    {

      

    }

       function Change_Select(flag)

    {     

       var flag1=flag;//是为了解决onchange()后值要改变&onload()(查询提交)后值要保存的问题

       //alert(flag1);

       var zhi = document.getElementById('Corp').value;

       var hidden_depart=document.all.HiddenKeyDepart.value;

        var url = "../selectCropDepart2?state="+number+"&keyDepart="+hidden_depart+"&id=" + escape(zhi)+"&flag="+flag1;

        //alert(url);

         if (window.XMLHttpRequest) {

 

             req = new XMLHttpRequest();

 

         }else if (window.ActiveXObject) {

 

             req = new ActiveXObject("Microsoft.XMLHTTP");

 

         }

       

       

        if(req){

 

             req.open("GET", url, true);

 

             req.onreadystatechange = callback;

            

             req.send(null);       

 

         }  

    }

   

   

    function callback() {

   

    if (req.readyState == 4) {

 

        if (req.status == 200) {

 

                 parseMessage();

             // update the HTML DOM based on whether or not message is valid

        }else{

            alert ("Not able to retrieve description" +req.status+req.statusText);

        }      

    }

   }

 

   function parseMessage() {

    var xmlDoc = req.responseXML.documentElement;

    var xSel = xmlDoc.getElementsByTagName('select');

    var select_root = document.getElementById('Depart');

    select_root.options.length=0;

    for(var i=0;i<xSel.length;i++)

    {   

        var xValue = xSel[i].childNodes[0].firstChild.nodeValue;

    var xText = xSel[i].childNodes[1].firstChild.nodeValue;

    var option = new Option(xText,xValue);

  

    try

       {

               select_root.add(option);   

       }

       catch(e)

       {

       }

    }

    }

       function Change_Select2()

    {     

       var zhi = document.getElementById('Depart').value;

         var url = "../selectDepartChu?state="+number+"&id=" + escape(zhi);

         if (window.XMLHttpRequest) {

 

             req = new XMLHttpRequest();

 

         }else if (window.ActiveXObject) {

 

             req = new ActiveXObject("Microsoft.XMLHTTP");

 

         }

       

       

        if(req){

 

             req.open("GET", url, true);

 

             req.onreadystatechange = callback2;

            

             req.send(null);       

 

         }  

    }

   

    function callback2() {

   

    if (req.readyState == 4) {

 

        if (req.status == 200) {

 

                 parseMessage2();

 

                 // update the HTML DOM based on whether or not message is valid

 

        }else{

 

            alert ("Not able to retrieve description" +req.status+req.statusText);

 

        }      

 

    }

   }

  

   function parseMessage2() {

  

    var xmlDoc = req.responseXML.documentElement;

    var xSel = xmlDoc.getElementsByTagName('select');

    var select_root = document.getElementById(' Chu ');

    select_root.options.length=0;

    for(var i=0;i<xSel.length;i++)

    {   

        var xValue = xSel[i].childNodes[0].firstChild.nodeValue;

    var xText = xSel[i].childNodes[1].firstChild.nodeValue;

    var option = new Option(xText,xValue);

   

    try

       {

              select_root.add(option);   

       }

       catch(e)

       {

      

       }

   

    }

 

    }

   

   

    function loads(flag){ 

    Change_Select(flag);

    //Change_Select2();

   }

   

 

   function Add()

   {

    document.formlist.action="adminuser_edit.jsp?Oper=add&Key=0";

     document.formlist.submit();

     

   }

   function Edit(key)

   {

        document.formlist.action="adminuser_edit.jsp?Oper=edit&Key="+key;

        document.formlist.submit();

      

   }

   function Del (key)

   {

     if (window.confirm("确实要删除吗?"))

    {

        var a=showModalDialog("adminuser_ctl.jsp?Oper=del&Key="+key,"","status:no;resizable:yes;dialogHeight:410px;dialogWidth:460px;unadorne:yes");

       if ((a==0))

       {

           document.formlist.submit();

       }

     }

   }  

   function Purview(key)

   {

        var a=showModalDialog("role_purview.jsp?Oper=del&Key="+key,"","status:no;resizable:yes;dialogHeight:410px;dialogWidth:460px;unadorne:yes");

   }

</script>

<body onload="loads(1)">

<%

    String strCorp=request.getParameter("Corp");

    String strDepart=request.getParameter("Depart");

    String strChu=request.getParameter(" Chu ");

    String strChuName="";

    String strUserName=request.getParameter("UserName");

    if(strCorp==null) strCorp="";

    if(strDepart==null) strDepart="";

    if(strChu==null) strChu="";

    if(strUserName==null) strUserName="";

    String strCropID1=(String)session.getAttribute("cropid");

    //判断如果登陆员工是总公司之外的就只显示此员工所在的公司

    if(strCropID1.equals("1")==false) strCorp=strCropID1;

    Conn conn=new Conn ();

    DataTable  dtChuName=new DataTable();

    String SqlChuName="";

%>

<form name="formlist" action="adminuser_list.jsp" method="post">

  <table cellSpacing="0" cellPadding="0" width="100%" bgColor="#bfcae6" border="0" background="../images/subtitle.gif">

    <tr>

     <td width="100%" height="26"><DIV align="left"><FONT face="宋体" color="#ffffff">&nbsp;&nbsp;当前位置:系统管理&gt;&gt;人员管理&gt;&gt;人员列表</FONT></DIV></td>

    </tr>

  </table>

     <table border="0" cellpadding="0" cellspacing="0" width="100%"  background="../images/ico_14.jpg">

    <tr>

    <td lign="right">&nbsp;</td>

     <td width="40" height="26" align="right" nowrap> 公司:</td>

     <td width="110" align="left"><select style="width:100 " name="Corp" id="Corp"  onChange="Change_Select(0)" ></select></td>

    <td width="40" align="right" nowrap>部门:</td>

    <td width="110" align="left"><select style="width:110 " name="Depart" id="Depart" onChange="Change_Select2()"></select></td>

    <td width="40" align="right" nowrap>处室:</td>

    <td width="110" align="left"><select style="width:110 " name="Chu" id=" Chu "></select></td>

    <td width="65" align="right" nowrap>员工名称:</td>

   <td width="70" align="right"><input type="text" name="UserName" class=input style="width:60px; font-size: 9pt "></td>

    <td width="70" align="right"><input type="submit"  class="button" value="查询" style="WIDTH:60px"></td>

    <td width="70" align="right"><input type="button" class="button" value="添加" style="WIDTH: 60px" onClick="Add();"></td>

    <td width="70" align="right"><input name="button" type="button" class="button" style="WIDTH: 60px" onClick="javascript:window.print();" value="打印"></td>

    </tr>

  </table> 

  <%

    String sql="select a.UserID, a.UserCode,a.UserName,";

           sql+=" CorpName=(Select MachName from sys04_Machine c where a.CropID=c.MachID ),";

           sql+=" DepartName=(Select MachName from sys04_Machine d where a.DepartID=d.MachID ),";

           sql+=" ChuName=(Select MachName from sys04_Machine e where a.ChuID=e.MachID ),";

           sql+=" RoleName=(select RoleName from sys05_role b where  b.roleid=a.roleid ) from employee01_Basic a  where  a.CropID=a.CropID";

     if(strCorp.length()>0)

           sql+=" and  a.CropID = "+strCorp;

     if (strDepart.length()>0  && strDepart.equals("Pselect")==false )

          sql+= " AND  a.DepartID = "+PubClass.getString(strDepart)+" ";

     if (strChu.length()>0  && strChu.equals("Pselect")==false ) {

          sql+= " AND  a.ChuID = "+PubClass.getString(strChu)+" ";

          SqlChuName="select * from sys04_Machine where MachID="+strChu;

           conn.querySql(SqlChuName,dtChuName);

           strChuName=dtChuName.getItemForName(0,"MachName").toString();

    }

    if (strUserName.length()>0 && strCorp.length()>0)     

           sql+= " AND  a.UserName like '%"+PubClass.getString(strUserName)+"%'";

    else if(strUserName.length()>0 && strCorp.length()==0)

           sql+= " and   a.UserName like '%"+PubClass.getString(strUserName)+"%'";

  %>

  <%       

    DataGrid dg=new DataGrid("1",request,"formlist",15,"");

    DataGridColumnItem dgci=new DataGridColumnItem();

    dgci.ColType=ColumnItemType.BindDataColumn;

    dgci.HeadText="人员编码";

    dgci.BindField="UserCode";

    dgci.Width="20%";

    dg.addColumn(dgci);

   

    dgci=new DataGridColumnItem();

    dgci.ColType=ColumnItemType.BindDataColumn;

    dgci.HeadText="人员姓名";

    dgci.BindField="UserName";

    dgci.Width="15%";

    dg.addColumn(dgci);

   

    dgci=new DataGridColumnItem();

    dgci.ColType=ColumnItemType.BindDataColumn;

    dgci.HeadText="人员角色";

    dgci.BindField="RoleName";

    dgci.Width="15%";

    dg.addColumn(dgci);

   

    dgci=new DataGridColumnItem();

    dgci.ColType=ColumnItemType.BindDataColumn;

    dgci.HeadText="公司";

    dgci.BindField="CorpName";

    dgci.Width="10%";

    dg.addColumn(dgci); 

   

    dgci=new DataGridColumnItem();

    dgci.ColType=ColumnItemType.BindDataColumn;

    dgci.HeadText="部门";

    dgci.BindField="DepartName";

    dgci.Width="20%";

    dg.addColumn(dgci);

   

    dgci=new DataGridColumnItem();

    dgci.ColType=ColumnItemType.BindDataColumn;

    dgci.HeadText="处室";

    dgci.BindField="ChuName";

    dgci.Width="10%";

    dg.addColumn(dgci); 

   

    dgci=new DataGridColumnItem();

    dgci.ColType=ColumnItemType.ButtonColumn;

    //dgci.HeadText="编辑";

    dgci.BindField="编辑";

    dgci.Script="Edit([UserID]);";

    dgci.Width="10%";

    dg.addColumn(dgci);

 

 

   

    dg.bindSql(sql); 

    out.print(dg.ShowGrid());

 

//1…………………………………………………..

//判断如果登陆员工是总公司之外的就只显示此员工所在的公司

    if(strCropID1.equals("1")==false) out.print(PubClass.BindOneCorpList2("document.all.Corp",strCorp));

    else{

       out.print(PubClass.BindAllCorpList2("document.all.Corp"));

    }

  %>

  <%

out.println("<script>document.all.Corp.value='"+strCorp+"'</script>");

  %>

  <% 

//2…………………………………………………..

    String sList="";

sList+="<script>document.all.Corp.value='"+PubClass.getString(strCorp)+"';</script>"; sList+="<script>document.all.Depart.value='"+PubClass.getString(strDepart)+"';</script>";

//sLeaderList+="<script>document.all.Chu.value='"+PubClass.getString(strChu)+"';</script>";

    sList+="<script>document.all.UserName.value='"+PubClass.getString(strUserName)+"';</script>";

%>

<%=sList%>

//3…………………………………………………..

   <input type="hidden" name="HiddenKeyDepart" value="<%=strDepart%>" >

   <input type="hidden" name="HiddenKeyChu" value="<%=strChu%>" >

   <input type="hidden" name="HiddenChuName" value="<%=strChuName%>" >

//4…………………………………………………..

<script>

    aa=document.createElement('OPTION');

    aa.text=document.all.HiddenChuName.value;

    aa.value=document.all.HiddenKeyChu.value;

    document.all.Chu.add(aa,-1); </script>

</form>

</body>

</html>

 

SelectCropDepartServlet2.java文件如下:

/**

 * sys04_Machine表中取数据进行二级下拉菜单(公司,部门)及关联的servlet

 * @author 邓浩

  */

public class SelectCropDepartServlet2 extends HttpServlet {

    public SelectCropDepartServlet2() {

       super();

    }

    public void destroy() {

       super.destroy(); }

    /**

     * The doGet method of the servlet. <br>

     *

     * This method is called when a form has its tag value method equals to get.

     *

     * @param request the request send by the client to the server

     * @param response the response send by the server to the client

     * @throws ServletException if an error occurred

     * @throws IOException if an error occurred

     */

    public void doGet(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException

    {

           response.setContentType("text/xml");

           response.setCharacterEncoding("UTF-8");

           response.setHeader("Cache-Control", "no-cache");        

           String targetId = request.getParameter("id").toString();

           //System.out.println("targetId:"+targetId);

           String targetState = request.getParameter("state").toString();

           //System.out.println("targetState:"+targetState);

           String targetKeyDepart = request.getParameter("keyDepart").toString();

            //System.out.println("targetKeyDepart:"+targetKeyDepart);

           //String targetKeyChu = request.getParameter("keyChu").toString();

           //System.out.println("targetKeyChu:"+targetKeyChu);

           String targetFlag = request.getParameter("flag").toString();

           String xml_start ="<selects>";

           String xml_end = "</selects>";

           String xml = "";

           String Pselect="Pselect";

           try{

             Conn   conn=new Conn ();

            DataTable  dt=new DataTable();

            DataTable  dtDepartName=new DataTable();

            String Sql="select * from sys04_Machine where ParentID=0 and cropid="+targetId;

            //System.out.println("Sql:"+Sql);

            if(targetKeyDepart.equals("")==false && targetKeyDepart.equals("Pselect")==false){

               String SqlDepartName="select * from sys04_Machine where MachID="+targetKeyDepart;

               //System.out.println("SqlMachName:"+SqlDepartName);

               conn.querySql(SqlDepartName,dtDepartName);

            }

            int i=0;

            if(targetFlag.equals("0")==true ){//如果Onchange时,将不判断

             targetKeyDepart="Pselect";

            }

            if  (conn.querySql(Sql,dt)){

               if(dt.getRowCount()==0){

                  //xml+= "<select><value>Pselect</value><text></text></select>" ;

               }

               else if(targetState.equals("all")==true ){

                   if( targetKeyDepart.equals("")==true || targetFlag.equals("0")==true||targetKeyDepart.equals("Pselect")==true){

                      xml+= "<select><value>"+Pselect+"</value><text>全部</text></select>" ;

                     //System.out.println("xml_1"+xml);

                   }

                   else if(targetFlag.equals("1")==true ){

                      //if(targetFlag.equals("1")==true){

                      xml+= "<select><value>"+targetKeyDepart+"</value><text>"+dtDepartName.getItemForName(0,"MachName").toString()+"</text></select>" ;

                      //System.out.println("xml_2"+xml);

                   }

               }

               else if(targetState.equals("select")==true){

                   xml+= "<select><value>"+Pselect+"</value><text>请选择</text></select>" ;

               }

               while  (i<dt.getRowCount()){

                 if( dt.getItemForName(i,"MachID").toString().equals( targetKeyDepart)==false ) //防止部门显示的下拉框显示重复值(主要是对查询后出现的问题)

                      xml+= "<select><value>"+dt.getItemForName(i,"MachID").toString()+"</value><text>"+dt.getItemForName(i,"MachName").toString()+"</text></select>";

                       i=i+1;

                    }

                }

              //System.out.println("i:"+i);

              if( targetFlag.equals("1")==true && targetKeyDepart.equals("Pselect")==false &&targetId.equals("")==false){ //主要解决查询后丢失"全部"的问题

                  if( targetFlag.equals("1")==true && targetKeyDepart.equals("")==false &&targetId.equals("")==false) //主要解决分公司登陆后"全部"重复的问题

                      xml+= "<select><value>"+Pselect+"</value><text>全部</text></select>" ;

              }

              }

              String last_xml = xml_start + xml + xml_end;

        //System.out.println("last_xml:"+last_xml);

        //  last_xml = new String(last_xml.getBytes("UTF-8"), "GB2312");

              response.getWriter().write(last_xml);

           }// try

           catch  (Exception e){

            System.out.print(e.getMessage());

           }

    }

    public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException

    {

       doGet(request,response);

    }

    public void init() throws ServletException {

      

    }

}

其对应的SelectDepartChuServlet.java文件如下:

 

/**

 * sys04_Machine表中取数据进行二级下拉菜单(部门,)及关联的servlet

 * @author 邓浩

 *

 */

public class SelectDepartChuServlet extends HttpServlet {

    public SelectDepartChuServlet() {

       super();

    }

 

   

    public void destroy() {

       super.destroy(); }

    /**

     * The doGet method of the servlet. <br>

     *

     * This method is called when a form has its tag value method equals to get.

     *

     * @param request the request send by the client to the server

     * @param response the response send by the server to the client

     * @throws ServletException if an error occurred

     * @throws IOException if an error occurred

     */

    public void doGet(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException

    {

           response.setContentType("text/xml");

           response.setCharacterEncoding("UTF-8");

           response.setHeader("Cache-Control", "no-cache");        

           String targetId = request.getParameter("id").toString();

           //System.out.println("targetId:"+targetId);

           String targetState = request.getParameter("state").toString();

           //System.out.println("targetState:"+targetState);

           //String targetKey = request.getParameter("keyChu").toString();

           //System.out.println("targetKey2:"+targetKey);

          

           String xml_start ="<selects>";

           String xml_end = "</selects>";

           String xml = "";

          

           try{

                Conn   conn=new Conn ();

               DataTable  dt=new DataTable();

            String Sql="select * from sys04_Machine where ParentID="+targetId;

            System.out.println("Sql:"+Sql);

               /**

                * DataTable  dtMachName=new DataTable();

                   String SqlMachName="select * from sys04_Machine where MachID="+targetKey;

               System.out.println("SqlMachName2:"+SqlMachName);

               conn.querySql(SqlMachName,dtMachName);

             if(targetKey.equals("")==false){

                   xml+= "<select><value>"+targetKey+"</value><text>"+dtMachName.getItemForName(0,"MachName").toString()+"</text></select>" ;

                   System.out.println("xml3"+xml);

              }    

                */

            int i=0;

            if  (conn.querySql(Sql,dt)){

              if(dt.getRowCount()==0){

                 xml+= "<select><value>Pselect</value><text></text></select>" ;

                //System.out.println("xml1"+xml);

              }

            else if(targetState.equals("all")==true){

                  xml+= "<select><value>Pselect</value><text>全部</text></select>" ;

                  //System.out.println("xml2"+xml);

              }

            else if(targetState.equals("select")==true){

                  xml+= "<select><value>Pselect</value><text>请选择</text></select>" ;

              }

               while  (i<dt.getRowCount()){

                   xml+= "<select><value>"+dt.getItemForName(i,"MachID").toString()+"</value><text>"+dt.getItemForName(i,"MachName").toString()+"</text></select>";

                   i=i+1;

               }

            }

        String last_xml = xml_start + xml + xml_end;

     //System.out.println("last_xml:"+last_xml);

     //  last_xml = new String(last_xml.getBytes("UTF-8"), "GB2312");

         response.getWriter().write(last_xml);

           }// try

           catch  (Exception e){

            System.out.print(e.getMessage());

           }

    }

   

    public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException

    {

       doGet(request,response);

 

    }

 

 

   

 

 

   

    public void init() throws ServletException {

      

    }

 

}

 

流程如下:

<1>当首页进入时

读取(1)处加载公司下来列表,并通过<body οnlοad="loads(1)"> 文件加载部门的值

<2>当选择公司时通过<td width="110" align="left"><select style="width:100 " name="Corp" id="Corp"  onChange="Change_Select(0)" ></select></td>

onChange加载部门的值

<3>当选择部门时通过<td width="110" align="left"><select style="width:100 " name="Corp" id="Corp"  onChange="Change_Select2()" ></select></td>

onChange加载处室的值

<4>当点击查询时,

公司值在下拉框中的显示是通过加载(1)中的:

<%out.println("<script>document.all.Corp.value='"+strCorp+"'</script>");将公司值保存在下来列表框中

部门值在下拉框中的显示是通过加载并通过<body onload="loads(1)"> 文件加载部门的值:

而处室的值却是通过(4)写死到页面中:

当然,Servelt类的内部处理流程也异常复杂,不过我就不详细介绍了,大家套用时只需要该需要的参数就可以了.

                                                                2006-9-8

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值