- - PR -
DropDownListで項目の並び順がおかしくなる
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-08-05 19:16
VC#+ASP.NETでWebアプリケーションを開発しています。
DropDownListにDataSourceにHashtableを指定しています。 Hashtableに順番に設定した値の順番が、表示時にはむちゃ くちゃになってしまいます。以下ソースのように実装して いますが、何か設定があるのでしょうか? Hashtable ht = new Hashtable(); while (sqlReader.Read()) { // DBより読み込んだ値をHashtableに設定 ht.Add(sqlReader.GetString(1), sqlReader.GetInt32(0)); } ht.Add("", 0); // 最初に1行、空の値を入れる DropDownList1.DataTextField = "Key"; DropDownList1.DataValueField = "Value"; DropDownList1.DataSource = ht; | ||||
|
投稿日時: 2003-08-05 20:58
こんばんは、meiです。
Hashtableの実装を見たわけじゃないのですが、 その名の通りハッシュキーを使っているのなら、 入れた順に入ってないのは正しいです。(並んでいたら凄い偶然) #アルゴリズム本とかでハッシュテーブルなどを調べてみると分かります。 キーと値がセットのデータ構造で、 何らかの並び順が必要な場合はHashtableよりSortedListが向いていると思います。 | ||||
|
投稿日時: 2003-08-06 10:17
meiさん、レスありがとうございます。
SortedListを使用する事で、無事入れた順番に値を表示させる事が 出来ました。Hashtableのアルゴリズムを理解していませんでした。 助かりました。非常に感謝してます! | ||||
|
投稿日時: 2003-08-06 10:52
念のため。
SortedListは入れた順ではありません。 入れた順とキーでのソート順が異なる場合は要注意です。 | ||||
|
投稿日時: 2003-08-06 11:25
なちゃさん、ありがとうございます。
SortedListは入れた順ではなく、キーでソートされるのですね。 今回は、キーでソートされたデータを順番に入れてるので、問題 ないようです。SortedListに対する理解が間違ったものになると ころでした。ありがとうございました。 | ||||
|
投稿日時: 2003-08-06 12:00
DBの値を入れるなら SqlDataAdapterとDatasetを使うのも
楽でいいですよ //DataSetを作る DataSet data = new DataSet(); //SQLDataAdapterの値をDataSEtに詰める sqlDataAdapter.fill(data); DropDownList1.DataTextField = "Key"; DropDownList1.DataValueField = "Value"; DropDownList1.DataSource = data; DropDownList1.DataBind(); //空白行追加(ここ動かしてないので怪しいです) DropDownList1.Items,Insert(0,new ListItem"","-1")); http://ja.gotdotnet.com/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/data/datagrid1.src&file=CS\datagrid1.aspx&font=3 | ||||
|
投稿日時: 2003-08-06 17:16
NYRLさん、ありがとうございます。
これは楽でいいですね。こういうやり方が一般的なんでしょうかね。 |
1