国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

jsp從數據庫獲取數據填充下拉框實現二級聯動菜單的方法

2020-07-27 21:29:37
字體:
來源:轉載
供稿:網友

本文實例講述了jsp從數據庫獲取數據填充下拉框實現二級聯動菜單的方法。分享給大家供大家參考,具體如下:

項目告一段落,現在將遇到的比較實用的東西記錄下來,寫了多遍了,謹記于此,以備查看!

1、首先在數據庫中獲取第一個下拉框的數據:

<s:select listKey="tsFrom" id="t_tsfrom" cssClass="required" listValue="tsFrom" cssStyle="width:90" list="tsfrom1" name="tsFrom" theme="simple" headerKey="" onchange="getTsFromDescribe(this);" headerValue="--請選擇--" />

后臺處理:

@Autowired private CustomMaManager custommamanager;//注解相當的好用啊,代碼都省了一大截 tsfrom1 = custommamanager.getTsFrom(); 

Service:

//得到投訴來源 public List<CustomManage> getTsFrom(){   return custommanagedao.getTsFrom(); }

dao:

/**得到產品類型**/ public List<CustomManage> getTsFrom(){   return this.find("SELECT distinct new CustomManage(tsFrom,'2') FROM CustomManage C WHERE C.tsFrom IS NOT NULL ORDER BY tsFrom ASC");}

注意:Oracle在java代碼里取出重復值與SqlServer不一樣,它得使用:

復制代碼 代碼如下:
SELECT distinct new CustomManage(tsFrom,'2') FROM CustomManage C WHERE C.tsFrom IS NOT NULL ORDER BY tsFrom ASC

先new實體bean(CustomManage) 然后在實體bean中給相應字段設置構造方法,不然將會出現后臺已經返回了值,但是在前臺下拉框中不顯示,下拉框空白的現象。

public CustomManage(String khname,int s){   this.khname=khname; } public CustomManage(String cpname,String type){   if("1".equals(type)){    this.cpname=cpname;   }else if("2".equals(type)){    this.tsFrom=cpname;   }else if("3".equals(type)){    this.khname=cpname;   } }

這里需要在bean的實體類里面加入相應的構造方法,以此來供去重使用。

至此第一級的數據準備已經差不多了。使用S標簽的list集合來獲取后臺傳遞過來的值。

2、第二級下拉菜單的級聯====利用Ajax來獲取數據

在第一級列表的onchange事件中編寫:

//投訴信息來源信息級聯 function getTsFromDescribe(ts_describe){  var tsfrom = $("#t_tsfrom").val();  var tstsFrom = $("#ts_tsFrom").val();  Ext.Ajax.request( {   url : '${ctx}/complaints/complaints!getTsFrom.action',   params : {    tsfrom : tsfrom//通過json形式將前臺每次獲取到的值傳遞給后臺   },   success : function(response) {    var json = Ext.util.JSON.decode(response.responseText);    if (json.success) {     var data = json.<strong>cmList</strong>;     if ("" == data) {      alert("請選擇投訴類型");      inputForm.t_tsfrom.focus();      $("#ts_tsFrom").empty();//每次需要將上一次的數據進行清空     } else {      $("#ts_tsFrom").empty();      //對獲取到的數據進行迭代     for ( var i = 0; i < data.length; i++) {      var id = data[i];      var name = data[i];      $("#ts_tsFrom").append(        "<option value='" + id + "'>" + name + "</option>");     }     dwr.util.removeAllOptions('tstsFrom');     dwr.util.addOptions('tstsFrom', data);  } } } }); }

后臺返回數據:

public void getTsFrom() throws Exception {   HttpServletResponse response = ServletActionContext.getResponse();   String ts_names = tsfrom;   List<CustomManage> list = complaintsmanager.getTsDescribe(ts_names);   response.setContentType("text/javascript"); // 后臺控制的代碼   PrintWriter writer = response.getWriter();   // 將得到的list集合轉為JSON對象傳給前臺處理   JSONArray j = JSONArray.fromObject(list);   writer.println("{'success':true,'<strong>cmList</strong>':" + j.toString() + "}"); }

到此一個從數據庫里動態獲取值,并且實現二級菜單級聯的功能就做的差不多了。發表出來希望對你對我都有好處哈。

這里加注一點就是在修改的時候下拉框的值不會保存,就是上一次點擊提交的時候保存在數據庫里的值無法填充到下拉框。

處理辦法:

var op1 = document.getElementById("op1").value; if(op1!=null){   $("#cp_validity").val(op1); //將取出來的值塞到下拉框中。一個蘿卜一個坑 } <input type="hidden" id="op1" value="${compDisposal.validity}">//使用表達式將存在數據庫里的值取出來,放在隱藏域里面 

希望本文所述對大家jsp程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 夏邑县| 呼和浩特市| 阳西县| 汤阴县| 宁强县| 柳林县| 大庆市| 武义县| 拜泉县| 襄樊市| 新兴县| 阳城县| 唐河县| 黄浦区| 通辽市| 稷山县| 漾濞| 白山市| 萨嘎县| 博湖县| 定结县| 茶陵县| 濉溪县| 兴隆县| 钟祥市| 水富县| 宣化县| 胶州市| 平远县| 镇坪县| 泽州县| 黄大仙区| 洞头县| 马尔康县| 清涧县| 鄂州市| 宜良县| 无极县| 北海市| 察哈| 东港市|