- - PR -
ドロップダウンリストを使った絞込み検索について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-06-28 14:20
いつもお世話になっています。みなさん、ご相談にのってください。
現在JSP + サーブレット + Beansを使ったWEBプログラミングを行なっています。 あるユーザから、 「上のドロップダウンリストにて選択した取引先コードで、下の製品名ドロップダウンリストを絞り込むことは出来ないかなあ。【実行】ボタン(フォーム送信)を押す前にできればいいんだけどねえ。」 と言われました。 本内容を実現させるあたり、良いプログラミング方法があれば教えてください。よろしくお願いします。 | ||||
|
投稿日時: 2006-06-28 14:26
Javaではなく、JavaScriptの範疇ですね。
JavaScriptを勉強すれば、そんなに難しいものではないです。 検索すればサンプルも、けっこう見つかりますね。 | ||||
|
投稿日時: 2006-06-28 14:48
早速の回答ありがとうございます。
JavaScriptのサンプルを探してはいるのですが、なかなか見つからなくて苦戦しています。なにかいいサンプルがあればUrl等を紹介していただけると助かります。 *「取引先コードも製品名もデータベース(Oracle)を参照しなければいけないので、必ずBeansをワンクッション置かなければいけん!」 という考えがそもそもまずいんでしょうね。(我ながら固い頭。) | ||||
|
投稿日時: 2006-06-28 15:04
>上のドロップダウンリストにて選択した取引先コードで、下の製品名ドロップダウンリストを絞り込むことは出来ないかなあ どういう関係になっているかわからんので答えそのものは提示できないっしょ。 ネット情報は参考にする程度にとどめて自分なりにカスタマイズしてちょ。 >*「取引先コードも製品名もデータベース(Oracle)を参照しなければいけないので、必ず>Beansをワンクッション置かなければいけん!」 >という考えがそもそもまずいんでしょうね。(我ながら固い頭。) いやそれとこれとは直接は関係ないと思うよ? [ メッセージ編集済み 編集者: ぶさいくろう 編集日時 2006-06-28 15:08 ] | ||||
|
投稿日時: 2006-06-28 15:20
ぶさいくろうさん、回答ありがとうございます。
下記の件、了解しました。もう少し自分で調べます。ただ自分が考えていたのは、 (1)下記テーブルから、それぞれのデータ参照Beansを作成 【取引先テーブル】 取引先コード(key) 取引先名称 【製品テーブル】 製品コード(key) 製品名 取引先コード (2) 入力用フォーム表示の際、参照Beansを呼び出す。 <% Jmast_SeihinSelB.searchExecute(); %> <% Jmast_TorihikiSelB.searchExecute(); %> (3) (2)の下にて呼び出したBeansを参照する。 <select name="spa_code_kbn" style="font-family: 'MS ゴシック'" > <option value ='Dummy' selected>選択してください。 <%for(int i=0; i<Jmast_SeihinSelB.GetMaxResult(); i++) {%> <option value='<%=Jmast_SeihinSelB.getcode(i)%>'> <%=Jmast_SeihinSelB.getlong_nm(i)%>|<%=Jmast_SeihinSelB.getcode(i)%> <%}%> </select> で行き詰ってしまいました。 | ||||
|
投稿日時: 2006-06-28 15:34
JavaScriptのonchangeを使えばいいのではないですか。
上のドロップダウンリストの取引先コードを選択したら リクエストを飛ばして、下の製品名ドロップダウンリストを 再生成するようにすればいいのでは。 JavaScriptを調べるなら とほほとかで調べてみるといいんじゃないかな。 http://www.tohoho-web.com/ | ||||
|
投稿日時: 2006-06-28 15:55
naoponさん、回答ありがとうございます。
やはり初回のJSP作成の際、 (1)JavaScriptで参照できるよう製品テーブルを配列を出力しておく。 (2)JavaScriptのonchangeにて (3)あらかじめ配列に退避した製品テーブルにて項目を再作成する。 for (i=len-1; i>=0; i--) { document.myForm.xxxxx.options[i] = null; } for (i=0; i<menuItem[n].length; i++) { document.myForm.xxxxx.options[i] = new Option(menuItem[n][i],menuItem[n][i]); } くらいしかなさそうですね。でも製品名が多いから、別案を考えたほうがよさそうですね。 みなさん、いろいろありがとうございした。 | ||||
|
投稿日時: 2006-06-28 15:56
最初に上のドロップダウンの要素に対応するリストを全部保持しておいて、onchangeで下のドロップダウンの内容を書き換える、
という方法もありえます。 要素が極端に多かったりすると、取得やリストの生成に時間がかかるということになったりもするので、データを考慮する必要はありますね。 |