JSP+JavaScript は、第 2 レベルのカスケード ドロップダウン メニューを作成します。
class (第 1 レベルの列情報): classId (自動番号付け)、className (列名)、Nclass (2 次列情報)、NclassId (自動番号付け)、NclassName (列名) 、parentId (クラス テーブルの classId に関連付けられた第 1 レベルの列 ID)
<%@ ページ contentType=text/html charset=GB2312 language=java errorPage=../error.jsp %> <%@ include file=../conn.jsp%> <%@ include file=../ds.jsp%> <%@ taglib uri=http://java.sun.com/jsp/jstl/sql divfix=sql %> <%request.setCharacterEncoding(gb2312); <HTML><ヘッド> <META http-equiv=コンテンツタイプ content=text/html; <TITLE>カスケード メニュー</TITLE> <LINK rel=stylesheet type=text/css href=style.css> </HEAD> <!--データベースからセカンダリ列情報を取得します--> <%String sql=select * from Nclass order by NclassId asc; ResultSet rs=stmt.executeQuery(sql); %> <!-- 二次列情報を配列 subcat に保存します --> <script type=text/javascript> var onecount; ワンカウント=0; サブキャット = 新しい配列(); <% int カウント = 0; while(rs.next()){ %> subcat[<%=count%>] = new Array(<%=rs.getString(NclassName)%>, <%=rs.getString(NclassId)%>,<%=rs.getString(parentId)%>); <% カウント++; } rs.close(); %> onecount=<%=count%>; <!--選択表示を決定する関数--> 関数changelocation(locationid) { document.myform.NclassId.length = 0; var locationid=locationid; 変数 i; for (i=0;i < onecount; i++) { if (subcat[i][2] == locationid) { document.myform.NclassId.options[document.myform.NclassId.length] = 新しい オプション(subcat[i][0], subcat[i][1]); } } } </script> <FORM メソッド=POST 名=myform アクション=adminsave.jsp?action=add> <表> <TR> <TD>第 1 レベルの分類</TD> <TD> <SELECT name=classId onChange=changelocation(document.myform.classId.options [document.myform.classId.selectedIndex].value) size=1> <OPTION 選択値>==第 1 レベルのカテゴリを選択してください==</OPTION> <sql:query var=query dataSource=$> SELECT * FROM クラス </sql:クエリ> <c:forEach var=row items=$> <option value=$>$</option> </c:forEach> </選択> </TD> <TD>二次カテゴリを選択してください</TD> <TD> <SELECT name=NclassId> <OPTION 選択値>==第 2 レベルのカテゴリを選択してください==</OPTION> </選択> </TD> </TR> </テーブル> </FORM> </BODY> </HTML> <%@ ページ contentType=text/html charset=GB2312 language=java errorPage=../error.jsp %> <%@ include file=../conn.jsp%> <%@ include file=../ds.jsp%> <%@ taglib uri=http://java.sun.com/jsp/jstl/sql divfix=sql %> <%request.setCharacterEncoding(gb2312); <HTML><ヘッド> <META http-equiv=コンテンツタイプ content=text/html; <TITLE>カスケード メニュー</TITLE> <LINK rel=stylesheet type=text/css href=style.css> </HEAD> <!--データベースからセカンダリ列情報を取得します--> <%String sql=select * from Nclass order by NclassId asc; ResultSet rs=stmt.executeQuery(sql); %> <!-- 二次列情報を配列 subcat に保存します --> <script type=text/javascript> var onecount; ワンカウント=0; サブキャット = 新しい配列(); <% int カウント = 0; while(rs.next()){ %> subcat[<%=count%>] = new Array(<%=rs.getString(NclassName)%>, <%=rs.getString(NclassId)%>,<%=rs.getString(parentId)%>); <% カウント++; } rs.close(); %> onecount=<%=count%>; <!--選択表示を決定する関数--> 関数changelocation(locationid) { document.myform.NclassId.length = 0; var locationid=locationid; 変数 i; for (i=0;i < onecount; i++) { if (subcat[i][2] == locationid) { document.myform.NclassId.options[document.myform.NclassId.length] = 新しい オプション(subcat[i][0], subcat[i][1]); } } } </script> <FORM メソッド=POST 名=myform アクション=adminsave.jsp?action=add> <表> <TR> <TD>第 1 レベルの分類</TD> <TD> <SELECT name=classId onChange=changelocation(document.myform.classId.options [document.myform.classId.selectedIndex].value) size=1> <OPTION 選択値>==第 1 レベルのカテゴリを選択してください==</OPTION> <sql:query var=query dataSource=$> SELECT * FROM クラス </sql:クエリ> <c:forEach var=row items=$> <option value=$>$</option> </c:forEach> </選択> </TD> <TD>二次カテゴリを選択してください</TD> <TD> <SELECT name=NclassId> <OPTION 選択値>==第 2 レベルのカテゴリを選択してください==</OPTION> </選択> </TD> </TR> </テーブル> </FORM> </BODY> </HTML> |