- - PR -
DropDownListでのデータの取得について
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-08 18:54
ぼのぼのです。
DataViewのRowFilterを使う方法はいかがでしょう?
こんなイメージのDataTableがあるとします。 これを、初回ロード時にSessionにしまっておきます。 で、例えば区分1で魚が選択されたら、
みたいな感じでRowFilterを設定したDataViewを区分2のDropDownListの DataSourceにしてやればうまくいくと思います。 | ||||||||
|
投稿日時: 2005-10-12 11:03
ぼのぼの様返信ありがとうございます
sessionにdatatableを格納する方法がちょっとわからないのですが If Not IsPostBack Then Dim Conn As SqlConnection = データベースに接続 Conn.Open() Dim cmd As New SqlCommand("select * FROM DataTable", Conn) Dim dr As SqlDataReader = cmd.ExecuteReader (ここまであってるのかな?) ・・・ End If テーブルを作成する場合は Dim Conn As SqlConnection = データベースに接続 Conn.Open() If DropDownList区分1.SelectedValue = "肉" Then Dim cmd As New SqlCommand("select * FROM DataTable where 区分1='肉'", Conn) Dim dr As SqlDataReader = cmd.ExecuteReader DropDownList区分2.DataSource = dr DropDownList区分2.DataTextField = "区分2" DropDownList区分2.DataValueField = "区分2" DropDownList区分2.DataBind() dr.Close() End If If DropDownList区分1.SelectedValue = "魚" Then ・・・(魚の場合) End If If DropDownList区分1.SelectedValue = "野菜" Then ・・・(野菜の場合) End If みたいな感じでもできると思うのですが、テーブルを作成せずに区分2を制御したいのです テーブル作成する場合はぼのぼの様のやり方でsessionに格納したほうがいいと思うのですが If DropDownList区分1.SelectedValue = "野菜" Then (ここを固定値(人参・南瓜・茄子など)の中から選択させ返すようにしたい テーブルを作成せずにプログラムで判断させたいのです) End If | ||||||||
|
投稿日時: 2005-10-12 15:39
あ、ひょっとしてDropDownListの値を直接変えたいってことですか?
それなら DropDownList2.Items.Clear() した後 DropDownList2.Items.Add("林檎") 表示内容とvalueを別にしたい場合は DropDownList2.Items.Add(New ListItem("林檎", "apple")) | ||||||||
|
投稿日時: 2005-10-12 16:19
既出です。
DataTableに読み込むなら、SqlDataReaderではなくSqlDataAdapter(のFillメソッド)を使います。 | ||||||||
|
投稿日時: 2005-10-12 19:12
ぼのぼの様返信ありがとうございました
クリアして追加するですね、参考になりました todo様 Dim ds As DataTable If Not IsPostBack Then Dim Conn As SqlConnection = データベースに接続 Conn.Open() Dim cmd As New SqlCommand("select * FROM DataTable", Conn) Dim dr As SqlDataAdapter dr.Fill(ds) Session.Item("DataTable") = cmd.Fill(ds) ・・・ End If こんな感じになるのでしょうか? ネット等のサンプルを見ながらやっているのですが、上記のコードではエラーがでます | ||||||||
|
投稿日時: 2005-10-12 21:13
ええと、何処でエラーになるのか。 また、エラーコードは書いた方がいいのでは^^; で、本題 1、DataTable SqlDataAdapterにNewが抜けてます 2、sqldataadapterに sqlcommandをセットしていないように見受けられます。 | ||||||||
|
投稿日時: 2005-10-12 21:17
エラーとは関係無いんですが…
Fill()メソッドは、引数にDataSetも使用できます。 変数名がdsだとDataSetかと思ってしまうので、変えた方がいいです。 #細かいことですいません… | ||||||||
|
投稿日時: 2005-10-14 11:31
返信遅くなりすみません
ほのぼの様ご忠告ありがとうございます cedar様 If IsPostBack Then Dim dt As DataTable Dim Conn As SqlConnection = データベースに接続 Dim adapter As SqlDataAdapter = New SqlDataAdapter("select * FROM DataTable", Conn) Conn.Open() adapter.Fill(dt) Session.Item("DataTable") = adapter.Fill(dt) Conn.Close() End If 上記のコードでsessionにdatatableを格納できていると思うのですが
Dim view As DataView = table.DefaultView のところで 「オブジェクト参照がオブジェクト インスタンスに設定されていません。」 とメッセージが出てきます。 | ||||||||
