JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Servlet/JSP 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 [分享]讀取資料以下拉選單及checkbox方式呈現 [精華]
cjt





發文: 16
積分: 1
於 2003-10-02 18:25 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
本來因為怕原始碼寫得太醜,還可能會誤導別人,所以不敢po出來,但完成的過程中得到很多先進/大大的指導及協助,基於分享與感謝的心,因此決定還是給它po出來,能對其他人有幫助當然是最好,不然就當個參考吧...呵呵呵!(我想不到更好的標題了!版大若有更好的,請幫我更改!)

先聲明,以下的原始碼並沒有作最佳化的處理,完全以直覺的方式撰寫,需要哪個功能就直接加上去,所以算是非常'菜'的寫法,大大們看了別笑喔!當然若能幫我簡化一下也不錯啦...^_^

首先說明整段程式的作用,我在同一頁中有兩段語法,第一段的rs1在讀取資料後以下拉式選單的方式呈現(例如:樓別),而第二段的rs2則依據rs1的值再至另一資料表中抓出相關的資料,並以checkbox的方式呈現(例如:教室).而點選下拉選單(樓別)後,checkbox(教室)會跟著改變.

(1)rs1的語法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<select name="R1" onchange="test(location.herf=this.options[this.selectedIndex].value)" size=1>
<%
String STR=(String)session.getAttribute("STR");//取得session值,裡面紀錄的是表示設定過的樓別
String str1=request.getParameter("str1") ;//取得'樓別'的第一個欄位值,這一段是當session為空值時,有值可以讓rs1比對
 
if(STR==null)
{
rs = stmt.executeQuery("select * from 樓別");
while(rs.next())
{%>
<option value="<%=rs.getString("name")%>" <% if(rs.getString("name").equals(str1)) out.println("selected");%>><%
 
=rs.getString("name")%></option>//點選不同選項,會觸發onchange,但選單仍然停留在所點選之選項
<%}
}
else
{
rs = stmt.executeQuery("select * from 樓別 where name not in("+STR+")" );//比對後,只秀出沒設定過的樓別
rs.last();
 rs.getRow();
 if(rs.getRow()==0)//若比對後已無符合資料  
    {
 { out.println("<script>alert('設定完畢!');location.href='ok.jsp';</script>");//若所有樓別都設定過了,就跳到ok.jsp
  }
    }
else
{
 rs.beforeFirst();
 
while(rs.next())
{%>
<option value="<%=rs.getString("name")%>" <% if(rs.getString("name").equals(str1)) out.println("selected");%>><%
 
=rs.getString("name")%></option>
 
<%}}
    }%>
</select>


(2)rs2的語法:
1
2
3
4
5
6
7
8
9
10
11
12
<%
if(str1==null)
{
rs.first();
str1=rs.getString(1);//取得'樓別'的第一個欄位值,這一段是當session為空值時,有值可以讓rs2比對
}
rs2 = stmt.executeQuery("select * from 教室 where class='"+str1+"' ");
while(rs2.next())
{
out.println("<INPUT type='checkbox' name='A1' value='"+rs2.getString("class")+"'>"+rs2.getString("class")+"");
}
%>


(3)JavaScript的語法:(onchange用的)
1
2
3
4
5
6
7
<script language="JavaScript">
   
 function test(var1){
 my="test.jsp?str1="+var1;
 location.href=my;
   }
</script>


(4)session的語法:(session我是寫在另一頁喔!)
1
2
3
4
5
6
7
8
9
10
11
12
<%
String STR=(String)session.getAttribute("STR");
if(STR==null)
{
STR="'"+R1+"'";//R1就是從上一頁下拉選單傳來的選項值
}
else
{
STR=STR+",'"+R1+"'";
}
session.setAttribute("STR",STR);
%>


以上感謝snpshu大大,alanting大大,metavige大大,zippy大大,ingramchen大大,frank大大們的指導喔!


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
4262 [精華] [分享]讀取資料以下拉選單及checkbox方式呈現 cjt 2284 2003-10-02 18:25
» JWorld@TW »  Servlet/JSP 討論區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8