2

(ASP.Net メンバーシップおよびプロファイル プロバイダーを使用して) ユーザーのリストを含むグリッドビューがあり、必要なすべてのフィールドを表示することができました。しかし問題は、ユーザーのプロファイルを編集するページにアクセスするか、ユーザーのプロファイルからいくつかのフィールドを表示するグリッドビューに列を追加すると、これらがログオン済みとして設定されることです。

どうしてこれなの?これは回避できますか?

ユーザーのリストと、現時点で実際にログインしているユーザーを知る必要がありますが、この問題では、すべてのユーザーがログイン済みとしてマークされているため、わかりません。

これが私のグリッドビューのコードです。

   <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

最近、私のアプリの 1 つに、ここで機能する Windows 認証を使用する同様のシステムを実装しました。

UserID、UrlRequested、DateRequested フィールドを持つ ActiveUser というクラスと、List(Of ActiveUser). また、静的メソッド AddUser (UserID に一致するリスト内の既存の項目を削除してから新しい項目を追加する) と、10 分以上経過した DateRequested を持つユーザーを削除する GetUsers もあります。

次に、Global.asax下のファイルでApplication_StartActiveSession クラスを設定します。ユーザーをリストにApplication_BeginRequest追加します。次に、必要なページで GetUsers からリストをバインドできます。

于 2011-11-13T16:31:05.593 に答える