- PR -

Web.configのsectionGroup

1
投稿者投稿内容
ベルド
会議室デビュー日: 2006/03/23
投稿数: 4
お住まい・勤務地: 文京区
投稿日時: 2006-03-23 16:10
現在ASP.NETにてWebアプリを開発しております。

Web.configでsectionGroup、sectionを用いてドロップダウンリストに表示する文字列を定義したところ、思い通りの順番に文字列が登録されなくて困っています。

下記のようにしているのですが、ハッシュテーブルへの登録がどのような順番で
行われるのかがわかりません。
Web.config内で書いてある順番に登録されるものと思っていましたが、
そうではないようです。

どのようにすれば意図した順番で登録することができるのでしょうか?
以上、よろしくお願いします。

Web.config(一部抜粋)
コード:
<configSections>
  <sectionGroup name="DropDownListString">
    <section name="PrefectureList" type="System.Configuration.SingleTagSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  </sectionGroup>
</configSections>

<DropDownListString>
  <PrefectureList	List00="都道府県" List01="北海道" List02="青森" List03="岩手" List04="宮城" List05="秋田" List06="山形" List07="福島" List08="東京" List09="神奈川" List10="埼玉" List11="千葉" List12="茨城" List13="栃木" List14="群馬" List15="山梨" />
</DropDownListString>



プログラムファイル
コード:
protected void SetDropDownListItems(DropDownList ddl, string SectionString)
{
    IDictionary Table = (IDictionary)ConfigurationSettings.GetConfigSectionString);

    foreach(string Key in Table.Keys)
    {
        ddl.Items.Add(Table[Key].ToString());
    }
}


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-03-23 22:24
ハッシュテーブルに順番はない。
http://blogs.wankuma.com/jitta/archive/2005/12/01/19755.aspx
ベルド
会議室デビュー日: 2006/03/23
投稿数: 4
お住まい・勤務地: 文京区
投稿日時: 2006-03-24 10:27
Jitta様、返答ありがとうございます。

ハッシュテーブルの件は理解しました。

今回のようにドロップダウンリストに登録する項目をWeb.configに記載する際にはどのようにしたらよいのでしょうか?
そもそもWeb.configに記載することが間違えなのでしょうか?
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-03-24 10:39

IDictianary の Keys を配列に CopyTo して、その配列を Array.Sort 。
この配列をループで回して対応する IDictionary の要素を取り出す。
とかできそうですが。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2006-03-24 11:04
引用:

umeさんの書き込み (2006-03-24 10:27) より:
今回のようにドロップダウンリストに登録する項目をWeb.configに記載する際にはどのようにしたらよいのでしょうか?
そもそもWeb.configに記載することが間違えなのでしょうか?


ま、どこに定義するべきかってのはいろいろな条件やらなにやらによるので、
特に正解とか間違いとかってことはない(言えない)と思います。

で、まあやるとしたら、
・Hongliangさんの仰るように、キーでソートする(キー順でよいのなら)
・ちょっと定義が冗長になるけどNameValueSectionHandlerを使う
・単にappSettingsとかに一項目として追加して、カンマ区切りとかで定義する
あたりかな
カンマ区切りとかはあんまりおすすめではないですね。
キーのソートは、順番を変えたいときにはまる可能性もあります。

ってことで、定義は長くなりますが、NameValueSectionHandlerの方が無難かもしれません。
ベルド
会議室デビュー日: 2006/03/23
投稿数: 4
お住まい・勤務地: 文京区
投稿日時: 2006-03-24 11:07
Hongliang様

目的は達成することができました。
どうもありがとうございました。
ベルド
会議室デビュー日: 2006/03/23
投稿数: 4
お住まい・勤務地: 文京区
投稿日時: 2006-03-24 11:26
なちゃ様、返答ありがとうございます。

NameValueSectionHandlerの方も試してみます。
1

スキルアップ/キャリアアップ(JOB@IT)