在一个jsp页面实现二级下拉框联动,实时读取数据库数据

在一个jsp页面实现二级下拉框联动,实时读取数据库数据,这个方法非常使用,只需要修改很小的地方就可以使用。设计的文件,serch.jspmain.jsbytetostr.js

先讲一下main.js,这是javascript,其中注意修改jsp页面名称。

 

 function findObject(fName,initValue)...{
   
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   xmlhttp.open("POST","searchmx.jsp?findObject="+fName+"&initValue="+initValue,
false);//
注意修改jsp页面
   xmlhttp.send();
   document.getElementById(fName).innerHTML=bytes2BSTR(xmlhttp.responsebody); 
//bytes2BSTR函数在bytetostr.js
 }

 其次为bytetostr.js,这是vbscript,这个不需要修改任何内容,他的主要功能就是读取数据转换字符串用的。

 
Function  bytes2BSTR(vIn)
  
dim  i
  strReturn 
=   ""
  
For  i  =   1   To  LenB(vIn)
  ThisCharCode 
=  AscB(MidB(vIn,i, 1 ))
  
If  ThisCharCode  <   & H80  Then
  strReturn 
=  strReturn  &   Chr (ThisCharCode)
  
Else
  NextCharCode 
=  AscB(MidB(vIn,i + 1 , 1 ))
  strReturn 
=  strReturn  &   Chr ( CLng (ThisCharCode)  *   & H100  +   CInt (NextCharCode))
  i 
=  i  +   1
  
End   If
  
Next
  bytes2BSTR 
=  strReturn
End Function

 

接下来就是serch.jsp页面,只需要修改div中的id为你想要的名字,再将一开始的包更换一下,已经sql语句改下就可以了,有不明白的可以参与讨论

 

<% @ page contentType = " text/html; charset=gb2312 "  language = " java "   import = " com.sjth.zdsygl.vo.*,com.sjth.zdsygl.biz.*,java.util.*,com.sjth.zdsygl.jdbc.*,java.sql.ResultSet " %> // 导入相应的包
<%
// 这部分代码用于执行查询数据库,返回字符串
   if  (request.getParameter( " findObject " ) != null ) {
    
if (request.getParameter("findObject").equals("hy_dm")){
      DBConnect conn 
= null;
      ResultSet rs 
= null;
      
try{                    
        out.print(
"<select name='hy_dm' οnchange="javascript:findObject('hymx_dm',this.value)">"); 
        String sql 
= "select * from dm_hy group by left(hy_dm,7)";
        conn 
= new DBConnect();
        conn.setPstmt(sql);
        rs 
= conn.executeQuery(sql);
        
while(rs.next()){
          out.print(
"<option value='"+rs.getString("hy_dm")+"'>"+rs.getString("hy_mc")+"</option>"); 
        }
     
        out.print(
"</select>"); 
     }

     
catch (Exception e){                    
     }

     
finally{
          
try{
            
if (rs != null)
                rs.close();
            
if (conn != null)
                conn.close();
          }

          
catch (Exception e){
            e.printStackTrace();
          }

     }

   }

    
if (request.getParameter("findObject").equals("hymx_dm")){
      DBConnect conn 
= null;
      ResultSet rs 
= null;
      
try{                    
        out.print(
"<select name='hymx_dm' >"); 
        String sql 
= null;
        
if (request.getParameter("initValue").equals("")){
          sql 
= "select * from dm_hy";
        }

        
else{
          sql 
= "select * from dm_hy where hy_dm like '"+request.getParameter("initValue")+"%'";
        }

        conn 
= new DBConnect();
        conn.setPstmt(sql);
        rs 
= conn.executeQuery(sql);
        
while(rs.next()){
          out.print(
"<option value='"+rs.getString("hy_dm")+"'>"+rs.getString("hy_mc")+"</option>"); 
        }
     
        out.print(
"</select>"); 
     }

     
catch (Exception e){                    
     }

     
finally{
          
try{
            
if (rs != null)
                rs.close();
            
if (conn != null)
                conn.close();
          }

          
catch (Exception e){
            e.printStackTrace();
          }

     }

   }

   
return;
 }

%>
< html >
< head >
    
< link href = " css/table.css "  type = " text/css "  rel = " stylesheet " >
    
< script language = vbscript src = " css/bytetostr.js " ></ script >
    
< script language = javascript src = " css/main.js " ></ script > // 导入两个js文件
</ head >
< body >  
      
< div > 所属行业: </ div >  
      
< div id = " hy_dm " ></ div >   // 用来显示返回的字符串
       < div  > 所属明细行业: </ div >  
      
< div id = " hymx_dm " ></ div > // 用来显示返回的字符串
</ body >
</ html >
< script language = " javascript " >
       findObject(
" hy_dm " , "" );
       findObject(
" hymx_dm " , "" ); // 这两条是页面执行是调用
</ script >

 

欢迎大家讨论

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值