• 締切済み

DBのデータをjavascript側で利用したい

お世話になっております。 visual studio 2008でasp.net開発(VB)を行っております。 タイトルの通りなのですが、データバインドしたDBのデータの値をjavascript側に渡せず困っています。 具体的には、以下の通りです。 ■以下のテーブルがあります。  色 | 種類 | もの ===================  赤 |くだもの| りんご  紫 |くだもの| ぶどう  赤 | やさい | トマト  紫 | やさい | なす ■ASPのページには、ドロップダウンリストが2つあります。   ドロップダウンリストの値は、テーブルの"色"と"種類"のデータをバインドしています。   2つのドロップダウンリストを選択した時の"もの"の値をjavascript側で利用したいです。 この際のデータの渡し方が分からずに困っています。 私の行った手法としては、データバインドの出来るドロップダウンリストを新しく用意して、 そこへ一旦"もの"の値を入れておき、javascriptの「document.getElementById」を利用して 値を取得するという方法です。 実際上記の手法で期待する結果は得られましたが、結果取得用の3つ目のドロップダウンが 画面上に見えていることは好ましくありません。 そこで、visibleプロパティをFalseにしたところ、値が取得できなくなりました。 調べたところ、visibleプロパティをFalseにすると、画面描画だけでなく、HTML形式への変換も 行わなくなるので、javascriptへの値渡しも出来ないとの事でした。 とりあえず、暫定で3つ目のドロップダウンのwidthを0ptにしましたが、完全に消えるわけではないので、困っております。 長文になりましたが、現在ドロップダウンで暫定対応している点で、もっと一般的なな手法や案が御座いましたらご教示宜しくお願い致します。

みんなの回答

  • WebSurfer
  • ベストアンサー率55% (33/59)
回答No.2

> 暫定で3つ目のドロップダウンのwidthを0ptにしましたが、完全に消える > わけではないので、困っております。 html はレンダリングするが表示はしないということなら、当該 DropDownList で style="display:none;" としてやれば良いと思います。 具体的な方法は、例えばコードで行うなら、3 つ目の DropDownList に以下の ように設定します。もちろん css で静的に設定してやっても OK です。 protected void Page_Load(object sender, EventArgs e) { DropDownList3.Style["display"] = "none"; } ただし、テーブルの構造を見る限り、それで 2 つの DropDownList で選択し たデータから「もの」が特定できるとは思えません。「実際上記の手法で期 待する結果は得られました」とのことですが、失礼ながら、勘違いではない かと思われます。 > もっと一般的なな手法や案が御座いましたらご教示宜しくお願い致します。 クライアントコールバックや Web サービス + ASP.NET AJAX(または jQuery AJAX)を使用して、サーバーに 2 つの DropDownList で選択したデータを渡 し、サーバー側でそのデーターで DB を検索し、結果(該当する「もの」)を クライアントに返し、クライアントスクリプトでそれを受けて処置するという やり方をお勧めします。

参考URL:
http://surferonwww.info/BlogEngine/post/2011/04/02/Client-Callback.aspx
  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

visible:false よりもinputタグのtype:hiddenの方が早いんじゃない?

関連するQ&A