Членство в ASP.NET - необходимо добавить настраиваемые поля на экраны администратора - PullRequest
4 голосов
/ 25 мая 2010

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

Я просто не могу понять, как это сделать. Я попытался добавить столбец в таблицу членства и изменить сохраненные процессы, но столбец не будет отображаться.

Вот код моей страницы администратора, который мне нужно изменить.

<%@ Page Language="C#" MasterPageFile="~/admin.master" %>
<%@ Register TagPrefix="dc" TagName="alphalinks" Src="~/alphalinks.ascx" %>

<script runat="server">
    private void Page_PreRender()
    {
        if (Alphalinks.Letter == "All")
        {
            Users.DataSource = Membership.GetAllUsers();
        }
        else
        {
            Users.DataSource = Membership.FindUsersByName(Alphalinks.Letter + "%");

        }
        Users.DataBind();
    }


</script>

<asp:Content ID="Content1" ContentPlaceHolderID="c" Runat="Server">

<!-- #include file="_nav.aspx -->

<table class="webparts">
<tr>
    <th>Users by Name</th>
</tr>
<tr>
<td class="details" valign="top">

<!-- #include file="_nav3.aspx -->


User Name filter:&nbsp;&nbsp;&nbsp;
<dc:alphalinks runat="server" ID="Alphalinks" />

<br />
    <br />

<asp:GridView runat="server" ID="Users" AutoGenerateColumns="false"
    CssClass="list" AlternatingRowStyle-CssClass="odd" GridLines="none"
    >
<Columns>
    <asp:TemplateField>
        <HeaderTemplate>User Name</HeaderTemplate>
        <ItemTemplate>
        <a href="edit_user.aspx?username=<%# Eval("UserName") %>"><%# Eval("UserName") %></a>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:BoundField DataField="email" HeaderText="Email" />

    <asp:BoundField DataField="comment" HeaderText="Comments" />
    <asp:BoundField DataField="creationdate" HeaderText="Creation Date" />
    <asp:BoundField DataField="lastlogindate" HeaderText="Last Login Date" />
    <asp:BoundField DataField="lastactivitydate" HeaderText="Last Activity Date" />
    <asp:BoundField DataField="isapproved" HeaderText="Is Active" />
    <asp:BoundField DataField="isonline" HeaderText="Is Online" />
    <asp:BoundField DataField="islockedout" HeaderText="Is Locked Out" />
</Columns>
</asp:GridView>

</td>

</tr></table>


</asp:Content>

Я ценю любую помощь в этом, пожалуйста.

Спасибо,

Steve

Ответы [ 2 ]

3 голосов
/ 25 мая 2010

Редактировать: Не изменяйте сохраненные процедуры или таблицы, созданные с помощью поставщика членства. Это напрашивается на неприятности. Что вам нужно сделать, это добавить поставщика профилей, который расширяет стандартную информацию пользователя.

Оригинальный ответ: Прочитайте эту статью Скотта Гатри: http://weblogs.asp.net/scottgu/archive/2006/01/10/435038.aspx Речь идет о поставщике профилей таблиц, который намного лучше, чем стандартный.

Это тоже: http://weblogs.asp.net/scottgu/archive/2005/10/18/427754.aspx

2 голосов
/ 25 мая 2010

Стив, вы возвращаете пользовательский MembershipUser, который вы сконструировали с соответствующими значениями, из пользовательского MembershipProvider, который необходимо будет реализовать для этого?

Если нет, то вам нужно будет сделать это .

Если это так, вам нужно будет привести результаты из членства, так как его тип возврата является обычным пользователем членства, даже если вы возвращаете производный тип.

что-то вроде ..

Users.DataSource = Membership.GetAllUsers().Cast<MyMembershipUser>();
...