2010-12-29 23 views
1

こんにちは私はDropDownListを持っています。私は、DropDownListコントロールは、すべての単一の文字のANのために可視化するユーザ名は「ジョー」であれば、単一の値(のListItem)現在ログインしているユーザー、ここでDropDownList DataSourceの設定方法

<asp:ListItem>Joe</asp:ListItem> 

私の間違ったコードのように、それに可視化する必要がある

ListItem: 例:

<asp:ListItem>J</asp:ListItem> 
<asp:ListItem>o</asp:ListItem> 
<asp:ListItem>e</asp:ListItem> 

これは私のコードです:

<asp:DropDownList ID="uxUserListSelector" runat="server"></asp:DropDownList> 

     MembershipUser myCurrentUser = Membership.GetUser(); 
     myUserList.DataSource = myCurrentUser.UserName; 
     myUserList.DataBind(); 

これを修正する方法はありますか?ありがとう

答えて

7

あなたはDataSourceを文字列(myCurrentUser.UserName)に設定しています。それはそれを文字の配列として解釈し、それに応じてバインドします。

これを修正する方法については、正確に何をしようとしていますか?なぜ1つのアイテムを表示するのにDropDownListを使用していますか?なぜTextBoxまたはLabelになりませんか?

今のところ、DropDownListにはすべてのユーザーが含まれ、現在のユーザーを事前に選択することを前提としています。これは正しいです?その場合は、すべてのユーザーの名前を取得し、その名前リストにDropDownListをバインドする方法が必要です。 (ユーザー名の簡単なIList<string>おそらく行いますが、あなたはより良いかもしれません。そして、DataTextItemDataValueItemカスタムオブジェクトの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; 

をあなたは、当然のことながら、適切なエラー処理にこの一部をラップすることになるでしょう。たとえば、指定されたユーザー名がリストにない場合、最後の行は例外をスローします。

+0

+1私の考えは正確です。 – EJC

+0

こんにちは、あなたの考えのおかげで、私は "現在のユーザーを選択"ドロップダウンリストが必要です。私は初心者です:-) thnaks – GibboK

+0

@GIbboK:答えがいくつかのサンプルコードで更新されました。 – David

関連する問題