あなたはDataSource
を文字列(myCurrentUser.UserName
)に設定しています。それはそれを文字の配列として解釈し、それに応じてバインドします。
これを修正する方法については、正確に何をしようとしていますか?なぜ1つのアイテムを表示するのにDropDownList
を使用していますか?なぜTextBox
またはLabel
になりませんか?
今のところ、DropDownList
にはすべてのユーザーが含まれ、現在のユーザーを事前に選択することを前提としています。これは正しいです?その場合は、すべてのユーザーの名前を取得し、その名前リストにDropDownList
をバインドする方法が必要です。 (ユーザー名の簡単なIList<string>
おそらく行いますが、あなたはより良いかもしれません。そして、DataTextItem
とDataValueItem
カスタムオブジェクトのIList<>
をより細かく制御したい場合)
それはユーザ名のリストにバインドされていますたら、選択した値を現在のユーザ名に設定できます。
編集:あなたの応答に基づいて、全体的なコードは次のようになります。
// You'll need a method to get all of the users, this one is just for illustration
myUserList.DataSource = userRepository.GetAllUsers();
// Set this to the property on the user object which contains the username, to display in the dropdownlist
myUserList.DataTextField = "Username";
// Set this to the property on the user object which contains the user's unique ID, to be the value of the dropdownlist (this might also be the username)
myUserList.DataValueField = "UserID";
myUserList.DataBind();
// There are a number of different ways to pre-select a value, this is one
myUserList.Items.FindByText(myCurrentUser.UserName).Selected = true;
をあなたは、当然のことながら、適切なエラー処理にこの一部をラップすることになるでしょう。たとえば、指定されたユーザー名がリストにない場合、最後の行は例外をスローします。
+1私の考えは正確です。 – EJC
こんにちは、あなたの考えのおかげで、私は "現在のユーザーを選択"ドロップダウンリストが必要です。私は初心者です:-) thnaks – GibboK
@GIbboK:答えがいくつかのサンプルコードで更新されました。 – David