我有一个gridview,其中包含我的用户列表(使用ASP.Net Membership和Profile提供程序),我已经设法显示了我需要的所有字段。但问题是,当我访问编辑用户配置文件的页面或我向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>
我花了几个小时在谷歌上搜索没有任何运气的答案,所以非常感谢你的帮助。
提前致谢!
答案 0 :(得分:0)
我最近在我的一个应用程序上实现了一个类似的系统,该系统使用了可在此处运行的Windows身份验证。
我有一个名为ActiveUser的类,其中包含UserID,UrlRequested和DateRequested字段,以及另一个名为ActiveSession的类,其中包含List(Of ActiveUser)
。它还有静态方法AddUser(删除列表中与UserID匹配的任何现有项目,然后添加一个新项目)和GetUsers,删除任何DateRequested超过10分钟的人。
然后在Global.asax
下的Application_Start
文件中,我设置了ActiveSession类。在Application_BeginRequest
中,我将用户添加到列表中。然后,您可以在任何您想要的页面中绑定GetUsers列表。