- PR -

DropDownListの初期値を選択

1
投稿者投稿内容
his
会議室デビュー日: 2008/10/27
投稿数: 10
投稿日時: 2008-12-03 11:02
いつもお世話になっております。

Webアプリケーション(ASP.NET,C#)です。
画面が表示された際のDropDownListの初期値を
ユーザが入力した値とDropDownListの値とが
前方一致するItemにしたいのですが
そのようなことを実現する方法はあるのでしょうか。

例えば、以下のようなItemが保存されているDropDownListに対して
 001:HOGE1
 002:HOGE2
 003:HOGE3
ユーザーが「001」と入力した場合、「001:HOGE1」が選択される
といった具合です。

DropDownListは、PageLoad時に動的に作成しています。
あらかじめ、Item、Valueに別の値を設定しておくことができないとう状況です。

以上、宜しくお願い致します。
まさる
ベテラン
会議室デビュー日: 2006/12/21
投稿数: 59
お住まい・勤務地: 越後の中ほど
投稿日時: 2008-12-03 11:27
確認したいことがいくつかあります。

  1. .NET Frameworkのバージョンは何ですか?
  2. ユーザは「どこ」に入力するのですか?
  3. DropDownListの初期値を表示したいタイミングはいつですか?


以下は推測ですが、こういうことでしょうか?

  1. 画面のヘッダ部に入力する欄がある。
  2. 入力してボタン押下。
  3. 明細部のDropDownListの初期値が、ヘッダ部で入力した値になる。


_________________
まさるblog
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-12-03 11:33
コード:
foreach (ListItem item in this.DropDownList1.Items)
{
    item.Selected = (item.Text.IndexOf(this.TextBox1.Text) == 0);
}

ってのはどうでしょう。

・DropDownList に空白の Item がある場合
・TextBox の入力値が空白の場合
・該当する Item が1つも無い場合
とかも考慮する必要があるならもっとコーディングが必要だけど。
まさる
ベテラン
会議室デビュー日: 2006/12/21
投稿数: 59
お住まい・勤務地: 越後の中ほど
投稿日時: 2008-12-03 11:44
引用:

Kingさんの書き込み (2008-12-03 11:33) より:
コード:
foreach (ListItem item in this.DropDownList1.Items)

{
item.Selected = (item.Text.IndexOf(this.TextBox1.Text) == 0);
}

ってのはどうでしょう。

・DropDownList に空白の Item がある場合
・TextBox の入力値が空白の場合
・該当する Item が1つも無い場合
とかも考慮する必要があるならもっとコーディングが必要だけど。


前方一致なので、StartWithの方がいいでしょう。
http://msdn.microsoft.com/ja-jp/library/baketfxw.aspx

#URL修正
_________________
まさるblog

[ メッセージ編集済み 編集者: まさる 編集日時 2008-12-03 11:50 ]
his
会議室デビュー日: 2008/10/27
投稿数: 10
投稿日時: 2008-12-04 11:05
>まさる様、King様

返信ありがとうございます。
最初に、まさる様の確認事項についてですが
1..NET Framework 2.0です。
2.実際はGridViewのセルなのですが、ヘッダ部のTextBoxという解釈で問題ありません。
3.推測の通りです。入力したテキストと前方一致しているものをDropDownListより初期選択します。

King様よりいただきました方法で実現できそうです。
前方一致で検索したいので、確かにまさる様のおっしゃる通り
StartWithを使ってみようと思います。

StartWithというメソッドについては、初めて知りました。
ご教示ありがとうございました。おかげで無事に実装できそうです。
1

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