我有这样一段代码,实现的大致功能是选择第一个select的值,第二个Select的内容是所有pid为第一个所选id的id,第三个select的内容是所有
pid为第二个所选id的id,其后依次类推,代码如下:
<form name="form1">
1层
<select name="select1"onchange="form1.submit();">
<option>内容</option>
<%ResultSet r1=sqlbean.executeQuery("Select id,name from item where pid='0'");
while(r1.next()){%>
<option value="<%r1=getString("id")%>"selected="selected"><%=r1.getString("name")%></option>
<%}
r1.close();%>
</select>
2层
<select name="select2"onchange="form1.sumbit();">
<option>内容</option>
<%String a2=request.getParameter("select");
ResultSet r2=sqlbean.executeQuery("Select id,name from item where pid='"+a2+"'");
while(r2.next()){%>
<option value="<%r2=getString("id")%>"selected="selected"><%=r2.getString("name")%></option>
<%}
r2.close();%>
</select>
...//其后与2层相似省略!sqlbean.executeQuery是我写的一个数据库基本操作bean。
-----------------------------------------------------------------
但是每次选择后就提交,值虽然传到了,但是显示上还是未选前的值,如何每次提交后都显示提交的值?

解决方案 »

  1.   

    a2=request.getParameter("select"); 
    =====〉
    a2=request.getParameter("select1");
      

  2.   

    你是要显示你第一个下拉框中提交前所选的值吧
    <form name="form1">
    1层
    <select name="select1"onchange="form1.submit();">
    <option>内容</option>
    <%String a2=request.getParameter("select");
    ResultSet r1=sqlbean.executeQuery("Select id,name from item where pid='0'");
    while(r1.next()){%>
    <option value=<%=r1.getString("id")%> <%=a2.equals(r1.getString("id"))?"selected":""%>><%=r1.getString("name")%></option>
    <%}
    r1.close();%>
    </select>
    2层
    <select name="select2"onchange="form1.sumbit();">
    <option>内容</option>
    <%
    ResultSet r2=sqlbean.executeQuery("Select id,name from item where pid='"+a2+"'");
    while(r2.next()){%>
    <option value=<%=r2.getString("id")%> selected="selected"><%=r2.getString("name")%></option>
    <%}
    r2.close();%>
    </select>
    关键是这一句,当r1.getString("id")的值和上一个页面传过来的值相同时就把它设为selected
    <option value=<%r1.getString("id")%> <%=a2.equals(r1.getString("id"))?"selected":""%>><%=r1.getString("name")%></option>
    像你这想写是不对的
    <option value=<%=r2.getString("id")%> selected="selected"><%=r2.getString("name")%></option>
    这样每一个都是selected="selected"那怎么行呢,只能有一个是selected选中的
      

  3.   

    楼主的意思是每次选择提交的都是下拉列表框改变之前的值了,楼主却想提交自己选择的当前下拉列表框的值(PID),是这个意思吧
    如果是的话应该是事件的问题吧,用KEYDOWN事件试试(具体叫什么有点忘了,反正是这个意思的事件)
    :)希望能解决你的问题
      

  4.   

    我是每个框都是显示提交后的值比如说 第一个select 里有"内容","1","2"三个内容,当前显示的是"内容",我选择了"2",即提交
    ,服务器已经获取到"2",但是显示上还是"内容",其他select一样问题,我是想我选择了"2",提交后显示的就是"2"。
    请教应该怎么更改呢?
      

  5.   

    楼主的意思了解了
    那你change的时候所提交的2能够得到
    在重写下拉列表的时候多加一个条件
    就是只有添加的项为2的时候为selected
    而不是每个都是selected
      

  6.   

    <%if r2.getString("id")equals("楼主提交的值")
    {%>
    <option value=<%=r2.getString("id")%> selected="selected"><%=r2.getString("name")%></option>
    <%}%>楼主提交的值服务器端应该得的到
      

  7.   

    还有点我感觉到疑惑,应该是比对name吧,而不是id
      

  8.   

    日,代码都给你写好了,你试过没有啊
    <form name="form1">
    1层
    <select name="select1"onchange="form1.submit();">
    <option>内容</option>
    <%String a2=request.getParameter("select");
    ResultSet r1=sqlbean.executeQuery("Select id,name from item where pid='0'");
    while(r1.next()){%>
    <option value=<%=r1.getString("id")%> <%=a2.equals(r1.getString("id"))?"selected":""%>><%=r1.getString("name")%></option>
    <%}
    r1.close();%>
    </select>
    2层
    <select name="select2"onchange="form1.sumbit();">
    <option>内容</option>
    <%
    ResultSet r2=sqlbean.executeQuery("Select id,name from item where pid='"+a2+"'");
    while(r2.next()){%>
    <option value=<%=r2.getString("id")%> selected="selected"><%=r2.getString("name")%></option>
    <%}
    r2.close();%>
    </select>
      

  9.   

    liaohaiying(大菜) 的测试了,就好用了一次,再用就不行了,现在页面还是错误。
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause java.lang.NullPointerException
    org.apache.jsp.dec_jsp._jspService(dec_jsp.java:88)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
      

  10.   

    <select name="select">
      <%String r=request.getParameter("select");
      ResultSet rs=sqlbean.executeQuery("select adminuser from admin");
      while(rs.next()){%>
      <option value="<%=rs.getString("adminuser")%>"
      <%=r.equals(rs.getString("adminuser"))?"selected":""%>>
      <%=rs.getString("adminuser")%></option>
      <%}
      rs.close();%>
      </select>我就做了一个select,这个错误我看不明白,这段代码,刚写好测试的时候还好用,下午的时候就一直是上述错误了。
      

  11.   

    那是因为你打开网页时request.getParameter("select");是为空的,所以要先判断是不是提交了或这个值不为空if(request.getParameter("select")!=null)
    <select name="select">
      <%String r="";
    if(request.getMethod().equals("POST"))
         {
          r=request.getParameter("select");
         }
      ResultSet rs=sqlbean.executeQuery("select adminuser from admin");
      while(rs.next()){%>
      <option value="<%=rs.getString("adminuser")%>"
      <%=r.equals(rs.getString("adminuser"))?"selected":""%>>
      <%=rs.getString("adminuser")%></option>
      <%}
      rs.close();%>
      </select>
      

  12.   

    <%if(request.getParameter("select")!=null)%>
    <select name="select"onchange="form.submit();">
    <%String r="";
    if(request.getMethod().equals("POST"))
    {
    r=request.getParameter("select");
    }
    ResultSet rs=sqlbean.executeQuery("select adminuser from admin");
    while(rs.next()){%>
    <option value="<%=rs.getString("adminuser")%>"
    <%=r.equals(rs.getString("adminuser"))?"selected":""%>>
    <%=rs.getString("adminuser")%></option>
    <%}
    rs.close();%>
    </select>
    --------------------------------------------------------------------------------
    我加了一个选择后提交的操作
    <select name="select"onchange="form.submit();">
    从下拉框选择一个值提交了以后又显示原来的值,我想显示我选择的那个值,该怎么做啊?
      

  13.   

    把这一行<%if(request.getParameter("select")!=null)%>去掉
    你的<form type=post>这里面有post的吧或者这样试试
    <select name="select"onchange="form.submit();">
    <%String r="";
    if(request.getParameter("select")!=null)
    {
    r=request.getParameter("select");
    }
    ResultSet rs=sqlbean.executeQuery("select adminuser from admin");
    while(rs.next()){%>
    <option value="<%=rs.getString("adminuser")%>"
    <%=r.equals(rs.getString("adminuser"))?"selected":""%>>
    <%=rs.getString("adminuser")%></option>
    <%}
    rs.close();%>
    </select>