JAVA涂鴉
          關于JAVA的點點滴滴
          posts - 50,  comments - 689,  trackbacks - 0
          基于網友的要求,我貼出在項目中用到的三級聯動的代碼:

          jsp的代碼:

          <%@?page?contentType?=?"text/html;?charset=GBK"??import="java.util.*,com.wehave.hyerp.procurement.domain.Cgsqd"%>
          <%@?taglib?uri="struts-html"?prefix="html"?%>
          <%@?taglib?uri="struts-logic"?prefix="logic"?%>
          <%@?taglib?uri="struts-bean"?prefix="bean"?%>
          <html>
          ????
          <head>
          ????????
          <title>?</title>
          ????????
          <link?rel?=?"stylesheet"?type?=?"text/css"?href?=?"../css/olstyle.css">????
          ????????
          <SCRIPT?type="text/javascript">
          ????????var?req;
          ????????window.onload
          =function(){
          ????????}

          ????????
          ????????function?Change_Select()
          ????????
          {
          ????????????var?zhi
          =document.getElementById('m_gykfwzlbb_lbbm').value;
          ????????????var?url
          ="sqdSelect.go?method=getSkill&id="+zhi;
          ????????????
          if(zhi=="0"){
          ????????????????alert(
          "請選擇您要察看的信息");
          ???????????????????
          return;
          ????????????}
          else{
          ????????????????
          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?Change_Select2()
          ????????
          {
          ????????????var?zhi
          =document.getElementById('m_lbbm_se').value;
          ????????????
          //alert(zhi.substring(0,2));
          ????????????if(zhi=="0"){
          ????????????????alert(
          "請選擇您要察看的信息");
          ???????????????????
          return;
          ???????????????}

          ????????????
          if(zhi.substring(0,2)=="WY"){
          ????????????????var?url
          ="sqdSelect.go?method=getSkill2&id="+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);
          ????????????????}

          ????????????}
          else{
          ????????????????parent.topFram.location?
          ="sqdSelectAll.go?method=getlistAll&id="+zhi;
          ????????????}

          ????????}

          ????????
          ????????function?Change_Select3()
          ????????
          {
          ????????????var?zhi
          =document.getElementById('m_lbbm_th').value;
          ????????????
          //alert(zhi.substring(0,2));
          ????????????if(zhi=="0"){
          ????????????????alert(
          "請選擇您要察看的信息");
          ???????????????????
          return;
          ???????????????}
          else{
          ????????????????parent.topFram.location?
          ="sqdSelectAll.go?method=getlistAll2&id="+zhi;
          ????????????}

          ????????}

          ????????
          ????????function?callback()
          ????????
          {
          ????????????
          if(req.readyState?==?4)
          ????????????
          {
          ????????????????
          if(req.status?==?200)
          ????????????????
          {
          ????????????????????parseMessage();
          ????????????????}
          else{
          ????????????????????alert(
          "Not?able?to?retrieve?description"+req.statusText);
          ????????????????}

          ????????????}

          ????????}

          ????????
          ????????function?callback2()
          ????????
          {
          ????????????
          if(req.readyState?==?4)
          ????????????
          {
          ????????????????
          if(req.status?==?200)
          ????????????????
          {
          ????????????????????parseMessage2();
          ????????????????}
          else{
          ????????????????????alert(
          "Not?able?to?retrieve?description"+req.statusText);
          ????????????????}

          ????????????}

          ????????}

          ????????
          ????????function?parseMessage()
          ????????
          {
          ????????????var?xmlDoc
          =req.responseXML.documentElement;
          ????????????var?xSel
          =xmlDoc.getElementsByTagName('select');
          ????????????var?select_root
          =document.getElementById('m_lbbm_se');
          ????????????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?parseMessage2()
          ????????
          {
          ????????????var?xmlDoc
          =req.responseXML.documentElement;
          ????????????var?xSel
          =xmlDoc.getElementsByTagName('select');
          ????????????var?select_root
          =document.getElementById('m_lbbm_th');
          ????????????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){
          ????????????????}

          ????????????}

          ????????}

          ????????
          ????????
          ????????
          ????
          </SCRIPT>
          ????
          </head>

          <body?bgcolor?=?"#C8D0D4">
          ????
          <html:form?action="/cgsqdNewAction.go">?
          ????
          <TABLE?class?=?"cbToolbar"?id?=?"idToolbar"?cellpadding?=?'0'?cellspacing?=?'0'>
          ????????
          <TR?align?=?"left"?valign?=?"top"?>
          ????????????
          <TD??NOWRAP>&nbsp;物質類別:&nbsp;&nbsp;
          ????????????????
          <html:select?property="m_gykfwzlbb_lbbm"?onchange="Change_Select()">
          ????????????????????
          <html:option?value="0">請選擇</html:option>
          ???????????????????????
          <html:options?collection="LbfList"?property="m_gykfwzlbb_lbbm"?labelProperty="m_gykfwzlbb_lbmc"/>
          ????????????????
          </html:select>?&nbsp;
          ????????????????
          <html:select?property="m_lbbm_se"?styleId="m_lbbm_se"?onchange="Change_Select2()">
          ????????????????????
          <html:option?value="0">&nbsp;&nbsp;&nbsp;</html:option>
          ????????????????
          </html:select>
          ????????????????
          <html:select?property="m_lbbm_th"?styleId="m_lbbm_th"?onchange="Change_Select3()">
          ????????????????????
          <html:option?value="0">&nbsp;&nbsp;&nbsp;</html:option>
          ????????????????
          </html:select>
          ????????????????
          ????????????
          </TD>
          ????????????
          ????????
          </tr>
          ????
          </table>
          ?????
          </html:form>
          </body>
          </html>

          action中的代碼:
          /**
          ?????*?
          ?????*?查詢物質編碼類別列表操作(一級)
          ?????*?
          */

          ????
          public?ActionForward?doSelectWzlb(
          ????????????ActionMapping?mapping,
          ????????????ActionForm?form,
          ????????????HttpServletRequest?req,
          ????????????HttpServletResponse?res)?
          {
          ????????HttpSession?session?
          =?req.getSession();
          ????????UserSession?userSession?
          =
          ????????????(UserSession)?session.getAttribute(
          "userSession");
          ????????permission.setUserID(userSession.getUserId());
          ????????permission.setUserName(userSession.getUserName());
          ????????permission.setModuleName(
          "m_cgsqd");
          ????????permission.setActionStr(
          "'m_select'");
          ????????
          if(permissionService.checkUserPermission(permission)){
          ????????????
          int?updateSign=0;
          ????????????
          try{
          ????????????????cgsqdService.updateCgsqwzhzb_sqsl();
          ????????????????updateSign
          =1;
          ????????????}
          catch(Exception?e){
          ????????????????e.printStackTrace();
          ????????????????updateSign
          =0;
          ????????????}

          ????????????
          if(updateSign==1){
          ????????????????List?LbfList
          =cgsqdService.treeListWzlb2();
          ????????????????req.setAttribute(
          "LbfList",LbfList);
          ????????????????
          return?mapping.findForward("tools");
          ????????????}
          else{
          ????????????????
          return?null;
          ????????????}

          ????????}
          else{
          ????????????
          return?mapping.findForward("failure");
          ????????}

          ????}

          ????
          ????
          /**
          ?????*?
          ?????*?查詢物質編碼類別列表操作(二級)
          ?????*?
          */

          ????
          public?ActionForward?doSelectWzlb1(
          ????????????ActionMapping?mapping,
          ????????????ActionForm?form,
          ????????????HttpServletRequest?req,
          ????????????HttpServletResponse?res)?
          {
          ????????HttpSession?session?
          =?req.getSession();
          ????????UserSession?userSession?
          =
          ????????????(UserSession)?session.getAttribute(
          "userSession");
          ????????permission.setUserID(userSession.getUserId());
          ????????permission.setUserName(userSession.getUserName());
          ????????permission.setModuleName(
          "m_cgsqd");
          ????????permission.setActionStr(
          "'m_select'");
          ????????
          if(permissionService.checkUserPermission(permission)){
          ????????????
          int?updateSign=0;
          ????????????
          try{
          ????????????????cgsqdService.updateCgsqwzhzb_sqsl();
          ????????????????updateSign
          =1;
          ????????????}
          catch(Exception?e){
          ????????????????e.printStackTrace();
          ????????????????updateSign
          =0;
          ????????????}

          ????????????
          if(updateSign==1){
          ????????????????List?LbfList
          =cgsqdService.treeListWzlb2();
          ????????????????req.setAttribute(
          "LbfList",LbfList);
          ????????????????
          return?mapping.findForward("tools1");
          ????????????}
          else{
          ????????????????
          return?null;
          ????????????}

          ????????}
          else{
          ????????????
          return?mapping.findForward("failure");
          ????????}

          ????}

          ????
          ????
          /**
          ?????*?
          ?????*?查詢物質編碼類別列表操作(三級)
          ?????*?
          */

          ????
          public?ActionForward?getSkill(
          ????????????ActionMapping?mapping,
          ????????????ActionForm?form,
          ????????????HttpServletRequest?req,
          ????????????HttpServletResponse?res)?
          {
          ????????HttpSession?session?
          =?req.getSession();
          ????????UserSession?userSession?
          =
          ????????????(UserSession)?session.getAttribute(
          "userSession");
          ????????permission.setUserID(userSession.getUserId());
          ????????permission.setUserName(userSession.getUserName());
          ????????permission.setModuleName(
          "m_cgsqd");
          ????????permission.setActionStr(
          "'m_select'");
          ????????
          if(permissionService.checkUserPermission(permission)){
          ????????????String?id
          =req.getParameter("id");
          ????????????
          ????????????res.setContentType(
          "text/xml;charset=GBK");
          ????????????res.setHeader(
          "Cache-Control","no-cache");
          ????????????String?xml_start
          ="<?xml?version=\"1.0\"?encoding=\"GBK\"?>";
          ????????????xml_start
          +="<selects>";
          ????????????String?xml_end
          ="</selects>";
          ????????????String?xml
          ="<select><value>0</value><text>請選擇</text></select>";
          ????????????String?m_lbbm_se
          ="";
          ????????????String?m_lbmc_se
          ="";
          ????????????List?LbfList
          =null;
          ????????????
          if(id.equals("WY")){
          ????????????????LbfList
          =cgsqdService.treeListWzlb3_2(id);
          ????????????}
          else{
          ????????????????LbfList
          =cgsqdService.treeListWzlb3_1(id);????
          ????????????}

          ????????????Iterator?it
          =LbfList.iterator();
          ????????????
          while(it.hasNext()){
          ????????????????Cgsqd?cgsqd
          =(Cgsqd)it.next();
          ????????????????m_lbbm_se
          =cgsqd.getM_gykfwzlbb_lbbm();
          ????????????????m_lbmc_se
          =cgsqd.getM_gykfwzlbb_lbmc();
          ????????????????xml?
          +="<select><value>"+m_lbbm_se+"</value><text>"+m_lbmc_se+"</text></select>";
          ????????????}

          ????????????String?last_xml
          =xml_start+xml+xml_end;
          ????????????logger.debug(
          "XML是:"+last_xml);
          ????????????
          try?{
          ????????????????res.getWriter().write(last_xml);
          ????????????}
          ?catch?(IOException?e)?{
          ????????????????e.printStackTrace();
          ????????????}

          ????????????
          return?null;
          ????????}
          else{
          ????????????
          return?null;
          ????????}

          ????}

          主要代碼就這些,去掉一些權限大代碼,真正的代碼并不多。
          posted on 2006-08-09 15:21 千山鳥飛絕 閱讀(13629) 評論(10)  編輯  收藏 所屬分類: Ajax

          FeedBack:
          # re: Ajax實現三級聯動下拉框
          2006-08-26 19:28 | yyw_1023
          高手就是高手!佩服佩服!?。。。。。。。?!1  回復  更多評論
            
          # re: Ajax實現三級聯動下拉框
          2006-09-15 11:18 | zch
          我按照你的方法做了下,在onchange的時候,報了一個這樣的錯誤~!
          no action instance /SeclectAll.do ...
          配置
          <action path="/SelectAll"
          type="com.hdtq.main.SelectAction"
          scope="request">
          <forward name="success" path="/MyLogin.jsp"/>
          ................
          請問這是怎么回事呢???
          ..
          var url="/teach/SelectAll.do?method=g1&id="+zhi;
          ....  回復  更多評論
            
          # re: Ajax實現三級聯動下拉框
          2007-06-12 11:37 | 啊啊
          能不能用三維數組實現三級聯動阿?  回復  更多評論
            
          # re: Ajax實現三級聯動下拉框
          2007-06-12 14:20 | 千山鳥飛絕
          @啊啊
          可以參考這篇文章:
          javascript實現二級聯動下拉框
          http://www.aygfsteel.com/rickhunter/articles/64607.html  回復  更多評論
            
          # re: Ajax實現三級聯動下拉框[未登錄]
          2007-09-14 17:05 | liu
          我這里報錯,是Not able to retrieve descriptionUnkown  回復  更多評論
            
          # re: Ajax實現三級聯動下拉框[未登錄]
          2008-05-09 10:07 | 七七
          支持一下,借用啦。  回復  更多評論
            
          # re: Ajax實現三級聯動下拉框[未登錄]
          2008-10-25 12:52 | 紅狼
          請問你的UserSession是從哪得到的。能把詳細類創建寫一下嗎?Action怎么與頁面交互的?急求回答75974082@qq.com  回復  更多評論
            
          # re: Ajax實現三級聯動下拉框
          2008-10-28 22:40 | wa
          javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean under name LbfList
          為什么會這樣的啊?????????????  回復  更多評論
            
          # re: Ajax實現三級聯動下拉框
          2008-12-28 20:25 | 盜版
          原創? 絕對的“原創”!?。。。。。。。。?!  回復  更多評論
            
          # re: Ajax實現三級聯動下拉框
          2011-10-13 09:17 | tao
          厲害!我是新手。還得向您請教個問題。幫忙到我的看看我這段代碼。。。
          http://blog.csdn.net/myjsj_2006/article/details/6868701
          加載特別慢,能不能快點
            回復  更多評論
            
          正在閱讀:



          <2007年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          留言簿(35)

          隨筆檔案

          文章分類

          文章檔案

          好友的blog

          我的其他blog

          老婆的Blog

          搜索

          •  

          積分與排名

          • 積分 - 775909
          • 排名 - 56

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 灯塔市| 嘉禾县| 阳信县| 洛川县| 六盘水市| 颍上县| 吴忠市| 崇礼县| 南溪县| 信宜市| 宜宾市| 丰宁| 伽师县| 建德市| 屯留县| 枞阳县| 永康市| 赤峰市| 元朗区| 昌宁县| 金溪县| 夏津县| 巨鹿县| 景洪市| 六安市| 拉萨市| 施甸县| 响水县| 叙永县| 石家庄市| 绵阳市| 马公市| 东乌珠穆沁旗| 临猗县| 泰顺县| 武城县| 孟州市| 当阳市| 西林县| 青川县| 中方县|