Источник данных GetUsersInRole для DropDownList - PullRequest
0 голосов
/ 22 ноября 2010

Привет! Мне нужно отобразить в DropDownList список «пользователей», принадлежащих к определенной роли.

Это мой код:

        // 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».

Мне нужно использовать значение «UserId», когда посетитель выбирает элемент из DropDownList.

Как это сделать? Спасибо за вашу помощь

Ответы [ 2 ]

2 голосов
/ 22 ноября 2010

Вы можете взять выбранное имя пользователя и позвонить Membership.GetUser . Затем вы можете получить идентификатор пользователя с помощью свойства MembershipUser.ProviderUserKey .

Конечно, если цель состояла в том, чтобы получить MembershipUser от идентификатора пользователя, то у вас будет пользователь после вызова GetUser.

0 голосов
/ 22 ноября 2010

Вернитесь к своему .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>

Я предполагаю, что это также может быть сделано программно, но зачем?

...