2010-11-22 12 views
0

こんにちは私はDropDownListに特定のROLEに属する "Users"のリストを表示する必要があります。DropUsersListのGetUsersInRole DataSource

これは私のコードです:訪問者がDropDownListコントロール内の項目を選択すると

 // Find DropDownList 
     DropDownList myUserList = (DropDownList)uxInsertAuthorInput.FindControl("uxUserListSelector"); 
     // Bind data to DropDownList 
     myUserList.DataSource = Roles.GetUsersInRole("CMS-AUTHOR"); 
     myUserList.DataBind(); 
     myUserList.DataTextField = "UserName"; 

私の問題はあります。 渡される実際の値は「UserId」ではなく「UserName」です。

訪問者がDropDownListからアイテムを選択するときに、 "UserId"値を使用する必要があります。

どうすればよいですか? あなたの助けをありがとう

答えて

2

選択したユーザー名を使用してMembership.GetUserに電話をかけることができます。 MembershipUser.ProviderUserKeyプロパティを使用してユーザーIDを取得できます。

もちろん、ユーザーIDからMembershipUserを取得することが目的だった場合は、GetUserを呼び出した後でユーザーを取得します。

+0

これは正解ですが、Membership.FindUsersByNameの代わりに 'Membership.GetUser(username)y'を使用し、選択した項目のIdを見つけるだけです。 – Greg

+1

@Greg、ありがとう、あなたの提案で更新されました。 –

+0

私はMembership.GetUser(username)の使用に同意します。 – GibboK

0

.aspxコード(またはWYSIWYGを使用した場合は設計されています)に戻ります。 SQLデータソースでクエリを変更します。私はこれを同様にして使用しました:

 <asp:SqlDataSource ID="sqlUsersInRole0" runat="server" ConnectionString="<%$ ConnectionStrings:NCLWebConnectionString %>" 
      SelectCommand="GetUsersInRole" SelectCommandType="StoredProcedure"> 
      <SelectParameters> 
       <asp:Parameter DefaultValue="MaintenanceWorkers" Name="rolename" Type="String" /> 
      </SelectParameters> 
     </asp:SqlDataSource> 

私はこれもプログラムで行うことができますが、なぜ迷惑でしょうか?

+0

あなたの答えがありがとう – GibboK