DropDownList的GetUsersInRole数据源

时间:2010-11-22 14:12:13

标签: c# asp.net asp.net-membership

您好我需要在DropDownList中显示属于特定ROLE的“用户”列表。

这是我的代码:

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

我的问题是访问者在DropDownList中选择一个项目。 传递的实际值是“UserName”而不是“UserId”。

当访问者从DropDownList中选择一个项目时,我需要使用“UserId”值。

怎么做? 谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

您可以选择所选用户名并致电Membership.GetUser。然后,您可以使用MembershipUser.ProviderUserKey属性获取用户ID。

当然,如果目标是从用户ID获取MembershipUser,那么在调用GetUser后您将拥有该用户。

答案 1 :(得分: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>

我认为这也可以以编程方式完成,但为什么要这么麻烦?