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-Type 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 method=POST name=myform action=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-Type 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 method=POST name=myform action=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>