2

我有一个带有我的用户列表的网格视图(使用 ASP.Net 成员资格和配置文件提供程序),并且我设法显示了我需要的所有字段。但问题是,当我访问编辑用户个人资料的页面或向 gridview 添加一列时,它显示用户个人资料中的某些字段,这些被设置为已登录。

为什么是这样?这可以避免吗?

我需要知道用户列表,以及目前真正登录的用户,但是由于这个问题我不知道,因为所有用户都被标记为已登录。

这是我的网格视图的代码。

   <asp:GridView ID="gvUsers" runat="server" AutoGenerateColumns="False"
DataKeyNames="UserName"
   OnRowCreated="gvUsers_RowCreated" OnRowDeleting="gvUsers_RowDeleting" 
            Font-Size="8pt" Width="700px" CellPadding="4" ForeColor="#333333" 
            GridLines="None" AllowSorting="true">
       <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />

   <Columns>
      <asp:BoundField HeaderText="Usuario" DataField="UserName"/>
      <asp:HyperLinkField HeaderText="E-mail" DataTextField="Email"
         DataNavigateUrlFormatString="mailto:{0}" DataNavigateUrlFields="Email" />
      <asp:TemplateField HeaderText="No. Cliente">
        <ItemTemplate>
           <asp:Label ID="lblCustormerID" runat="server" Text='<%# Profile.GetProfile(Eval("UserName").ToString()).Contacts.CustomerID %>'></asp:Label>
        </ItemTemplate>
      </asp:TemplateField>
      <asp:BoundField HeaderText="Creado" DataField="CreationDate"
         DataFormatString="{0:MM/dd/yy h:mm tt}" />
      <asp:BoundField HeaderText="Ultima Actividad" DataField="LastActivityDate"
         DataFormatString="{0:MM/dd/yy h:mm tt}" />
      <asp:CheckBoxField HeaderText="Activo" DataField="IsApproved"
         HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" >
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
       </asp:CheckBoxField>
      <asp:CheckBoxField HeaderText="En Línea" DataField="IsOnline"
         HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" >
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
       </asp:CheckBoxField>
      <asp:HyperLinkField Text="<img src='../images/edit.gif' border='0' />"
         DataNavigateUrlFormatString="EditUsers.aspx?UserName={0}"
         DataNavigateUrlFields="UserName" />
      <asp:ButtonField CommandName="Delete" ButtonType="Image"
         ImageUrl="~/images/delete.gif" />
   </Columns>
       <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
       <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
   <EmptyDataTemplate>No se encontraron usuarios.</EmptyDataTemplate>
       <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
       <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
       <EditRowStyle BackColor="#999999" />
       <AlternatingRowStyle BackColor="White" />
</asp:GridView>

我花了几个小时在谷歌上搜索答案,但没有任何运气,因此非常感谢您的帮助。

提前致谢!

4

1 回答 1

0

我最近在我的一个应用程序上实现了一个类似的系统,它使用了可以在这里工作的 Windows 身份验证。

我有一个名为 ActiveUser 的类,它具有 UserID、UrlRequested 和 DateRequested 字段,另一个名为 ActiveSession 的类具有List(Of ActiveUser). 它还具有静态方法 AddUser(删除列表中与 UserID 匹配的任何现有项目,然后添加新项目)和 GetUsers 删除 DateRequested 超过 10 分钟的任何人。

然后在我设置 ActiveSession 类的Global.asax文件中。Application_StartApplication_BeginRequest我将用户添加到列表中。然后,您可以在您想要的任何页面中绑定来自 GetUsers 的列表。

于 2011-11-13T16:31:05.593 回答