ASP.NET成员资格 - 需要向管理屏幕添加自定义字段

时间:2010-05-25 14:11:16

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

我需要添加与登录相关联的公司名称字段。稍后我需要将其合并到我现有的管理屏幕中进行报告。

我无法弄清楚如何完成这项工作。我已尝试在Membership表中添加一列并修改存储过程,但该列不会显示。

以下是我需要修改的管理页面的代码。

<%@ 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>

我很感激您的帮助。

谢谢,

史蒂夫

2 个答案:

答案 0 :(得分:3)

编辑:不要修改存储过程或使用成员资格提供程序创建的表。这是在惹麻烦。您需要做的是添加一个Profile Provider,它扩展了标准用户信息。

原始答案: 阅读Scott Guthrie撰写的这篇文章:http://weblogs.asp.net/scottgu/archive/2006/01/10/435038.aspx 它与Table Profile Provider有关,它比开箱即用的要好得多。

这也是:http://weblogs.asp.net/scottgu/archive/2005/10/18/427754.aspx

答案 1 :(得分:2)

史蒂夫,您是否从自定义MembershipUser返回了自定义MembershipProvider,并使用适当的值构建了自定义Users.DataSource = Membership.GetAllUsers().Cast<MyMembershipUser>(); ,以便执行此操作?

如果没有,那么you will need to do so

如果是这样,您将需要从成员资格中转换结果,因为它的返回类型是股票成员资格用户,即使您要返回派生类型。

有些东西......

{{1}}