问:下拉列表的选项是保存在一张表里面的,如何从数据库中取值绑定到下拉列表?看到人家的回答:
“你是不是从数据库取出来的数据存到一个list集合中啊
在list集合中有两个字段(id和name)
<select name="">
<forEach var="list" item="LIST">
<option value="${list.id}"
${list.name}
</option>
</forEach>
</select>这样就可以了”
请问,这个怎么从数据库取出来的数据存到一个list集合中?我的两个表,学生信息表stuInfo(stu_xh,stu_name,stu_zy,...) 和专业表zy(zy_id,zymc)
学生表的stu_zy这个要从专业表那边取得zy_id。如何实现?

解决方案 »

  1.   

    用ajax做个级联  new个XMLHTTPREQUEST
      

  2.   

    太深奥了,怎么从数据库取出来的数据存到一个list集合中?
      

  3.   

    楼主这问题范围比较大。
    你要明确一下哪里不会。
    如:
    1、如何从数据库取值? (会还是不会?)
    2、会取值但不会放到select选择框里。
    3、不会取值也不会放到下拉框。只是把专业表查询出来放到select里就行 比较简单。
    首先确定你从数据库取到的值是什么格式(list?json?)
    确定了循环赋值就可以了。
      

  4.   


    你要先建立对应的实体,然后定义一个改实体类型的list,用get set方法将取到的数据添加到list里,然后传给页面!
      

  5.   


    public List<EmCustHorExpensesList> getEmCustHorExpensesList(int owner){
    List<EmCustHorExpensesList> arrayPage = new ArrayList<EmCustHorExpensesList>();
    Session session = super.getSession();
    Connection conn = session.connection();
    try{
    String sql = "select a.id,b.custName,a.status,a.custHor,a.auditTime,a.total,"
    +"(select sum(custHor) from EM_CustHorExpenses where owner = a.owner "
    +" and year(createTime) = year(a.createTime) and month(createTime) = month(a.createTime) and createTime <= a.createTime) as csum,"
    +"0.05*(select sum(totalAmount) from DM_DeliveryOrder where company = a.owner and datediff(mm,createTime,a.createTime) between 1 and 3)/3 as nsum"
    +" from EM_CustHorExpenses a left join BS_Customer b on a.customer = b.id "
    +" left join SM_Staff c on a.auditPeople = c.id "
    +" where a.owner =?";
    PreparedStatement stmt = conn.prepareStatement(sql);
    stmt.setInt(1,owner);
    ResultSet rs = stmt.executeQuery();

    while(rs.next()){
    EmCustHorExpensesList e=new EmCustHorExpensesList();
    int id = rs.getInt(1);
    String custName = rs.getString(2);
    String status = rs.getString(3);
    Double custDetail = rs.getDouble(4);
    java.sql.Date auditTime = rs.getDate(5);
    Double total = rs.getDouble(6);
    Double custHor = rs.getDouble(7);
    Double intotal = rs.getDouble(8);

    e.setId(id);
    e.setCustName(custName);
    e.setStatus(status);
    e.setCustDetail(custDetail);
    e.setAuditTime(auditTime);
    e.setTotal(total);
    e.setCustHor(custHor);
    e.setIntotal(intotal);


    arrayPage.add(e);
    }
    }catch(Exception e){
    System.err.println ("Cannot connect to database server");
    }finally{
    try {
    conn.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    session.close();
    }
    return arrayPage;
    }//这是一个JDBC去SQL数据库表的值,将数据放入一个list里返回的方法!前提要EmCustHorExpensesList实体!(对应相应的表!)
      

  6.   

    从数据库里面取到一个集合,用request.setAttribute("" ,list);放到作用域中即可
      

  7.   

    从数据库中取出的数据可以放到一个javabean中,然后循环生成多个javabean对象,把javabean对象放到一个集合中就可以了
      

  8.   

    回复3L,估计是第3个了!
    发觉他们直白的解释,不是很理解啊
    有代码吧,怎么感觉跟我贴上去的没有联系的
    你要先建立对应的实体,然后定义一个改实体类型的list,用get set方法将取到的数据添加到list里,然后传给页面!DB dbni = new DB();
    List list = dbni.xxxx(); ?定义的实体?
    还是stubean.java这个 是javabean吗?
    package com.jsp.bean;
    public class stubean{
    String stu_xh;
    String stu_name;
    String stu_pwd;
    String stu_sex;
    String stu_zy; public String getstu_xh(){
    return stu_xh;
    }
    public void setstu_xh(String stu_xh){
    this.stu_xh=stu_xh;
    }get set 是这里这些吗
      

  9.   

    如果我要用这样的代码,实现下拉框,现在这个下拉框没有任何东西显示出来,我还缺什么,估计是list集合没有?
    还是需要什么javabean?怎么写?
    <td align="center" bgcolor=#ADD8E6 >专业:</td>
    <td align="left" >
    <select name="stu_zy">
        <forEach var="list" item="${LIST}">
        <option value="${list.zy_id}"
        ${list.zymc}>
        </option>
        </forEach>
        </select>
      

  10.   

    不放到list也可以,讲resultset赋给一个bean,把bean添加到request,在jsp中usebean,在select里面循环输出也是可以的。
      

  11.   

    回12 还要知道什么?哎,怎么都这么复杂的
    就想弄一个下拉框,list到底怎么弄啊
      

  12.   

    <s:select list="#request.oqr" name="baseCustomer.organId"
    listKey="key" listValue="value.organName" theme="simple"
    headerKey="" headerValue="--请选择--" cssStyle="width:132px"></s:select>
    这是用得struts2标签,#request.oqr是你从代码传过来的
      

  13.   

    写在添加的页面,什么东西都没有出来啊,也没下拉框。#request.oqr是你从代码传过来的,是我从哪传来的?
    除了这一段代码,应该还有其他的东西吧
      

  14.   

    //查看所有专业表信息 
    public List que_allzyinfo() throws SQLException{
    List list = new ArrayList();
    rs = conn.prepareStatement("select * from zy").executeQuery();
    while(rs.next()){
    zybean zyb = new zybean();
    zyb.setzy_id(rs.getString("zy_id"));
    zyb.setzymc(rs.getString("zymc"));
    list.add(zyb);
    }
    return list;
    }下面的是传值?   <% 
          String zy_id = (String)request.getParameter("zy_id")==null?"":(String)request.getParameter("zy_id");
          String zymc = (String)request.getParameter("zymc")==null?"":(String)request.getParameter("zymc");
              DB dbm = new DB();
              List list = dbm.que_allzyinfo();
              if(!list.isEmpty()){   %>
    我的专业添加那 还是只有个空下拉框啊。
    <tr>
        <td align="center" bgcolor=#ADD8E6 >专业:</td>
        <td align="left" >
        <select name="stu_zy">
        <forEach var="list" item="${list}">
        <option value="${list.zy_id}"value="${list.zymc}">
        </option>
        </forEach>
        </select>
     </tr>
    到底要怎么写这个 select啊 ???能找到不用什么ajax之类的,完整的一个小例子,我就不用问啦
      

  15.   

    LZ  建议你弄清楚类,对象,方法,属性之间的关系。
    得到一个list 就是从数据库中查询一个对象的集合。
    比如:人,是一个类;张三是一个人,那么张三就是一个对象。
          张三有吃饭的行为,那么吃饭就是程序中所说的方法;张三有名字,那么名字就是属性了。希望能够帮助lz理解!!!
      

  16.   

    那我用 List list = dbm.que_allzyinfo(); 不是有了对象zy_id的集合了吗,
    可是怎么循环这个list 
        <%
           for(int i=0;i<list.size();i++){
        %>
           <option><%=list.get(i)%></option>    <%}%>
    下拉框 显示的是 一串 com.jsp.bean.zybean@36bb87 等等
    我要怎么循环这个list ?还是都错了
      

  17.   

    怎么样才会有 list.zy_id 这样的东西出来啊
      

  18.   

    先从数据库中找到一个对象的集合如下: public List<User> findAllUser() {
    List<User> list = this.getHibernateTemplate().find("from User");
    return list;
    }
    而后在Action中直接调用findAllUser()方法,List<User> list = this.findAllUser();
    再将这个list放到request中,即ServletActionContext.getRequest().setAttributte("lits",list);
    那么在jsp页面中你就可以这样来做:
    <c:if empty!=${list}>
    <forEach var="list" item="${list}">
      <option value="${list.id}">
      <option value="${list.name}">
      </option>
      </forEach>
    </c:if>
      

  19.   

    <%
      for(int i=0;i<list.size();i++){
    zybean zyb = list.get(i)
      %>
      <option value="<%=zyb.getzy_id()%>" ><%=zyb.getzymc()%></option>  <%}%>
      

  20.   

    都怪自己没理清这些代码咯,现在搞定了。 下拉框也出来了,存进表里的是ID。
     <% 
          String stu_zy = (String)request.getParameter("stu_zy")==null?"":(String)request.getParameter("stu_zy");
          String zymc = (String)request.getParameter("zymc")==null?"":(String)request.getParameter("zymc");
              DB dbm = new DB();
              List list = dbm.que_allzyinfo();
              if(!list.isEmpty()){   %>   <select name="stu_zy" class="input" >
      <%
           for(int i=0;i<list.size();i++){
            zybean zyb = (zybean)list.get(i);
        %>
       
        <option value="<%=zyb.getstu_zy()%>"><%=zyb.getzymc()%></option>
     
        <% }%>
        </select>