ProfileInfoCollection クラス
アセンブリ: System.Web (system.web.dll 内)

<SerializableAttribute> _ Public NotInheritable Class ProfileInfoCollection Implements ICollection, IEnumerable

ProfileInfoCollection オブジェクトには、データ ソースからのユーザー プロファイルを表す ProfileInfo オブジェクトが格納されています。ProfileInfoCollection は、ProfileProvider の GetAllProfiles、GetAllInactiveProfiles、FindProfilesByUserName、および FindInactiveProfilesByUserName の各メソッドによって返されます。
ProfileInfoCollection を DeleteProfiles メソッドに渡すと、プロファイルの情報とプロパティをデータ ソースから削除できます。

FindProfilesByUserName および FindInactiveProfilesByUserName の各メソッドを使用し、ユーザーがプロファイルを検索できるようにするコード例を次に示します。ユーザーは、find メソッドから返された ProfileInfoCollection を DeleteProfiles メソッドに渡すことで、関連付けられたプロファイルをデータ ソースから削除できます。
<%@ Page Language="VB" %> <%@ Import Namespace="System.Web.Profile" %> <script runat="server"> Dim pageSize As Integer = 5 Dim totalProfiles As Integer Dim totalPages As Integer Dim currentPage As Integer = 1 Dim provider As SqlProfileProvider Dim authOption As ProfileAuthenticationOption Dim inactiveDays As Integer = 120 Dim deletedProfiles As Integer = 0 Public Sub Page_Load() DeletedMessage.Text = "" provider = CType(Profile.Providers("SqlProvider"), SqlProfileProvider) authOption = GetAuthenticationOption() If Not IsPostBack Then InactiveDaysTextBox.Text = inactiveDays.ToString() GetProfiles() Else inactiveDays = Convert.ToInt32(InactiveDaysTextBox.Text) End If End Sub Public Sub ProfileGrid_Delete(sender As Object, args As GridViewCommandEventArgs) ' Retrieve user name selected. Dim index As Integer = Convert.ToInt32(args.CommandArgument) Dim username As String = ProfileGrid.Rows(index).Cells(0).Text provider.DeleteProfiles(New string() {username}) DeletedMessage.Text = "1 profile deleted." ' Refresh profile list. currentPage = Convert.ToInt32(CurrentPageLabel.Text) GetProfiles() End Sub Private Sub GetProfiles() ProfileGrid.DataSource = provider.GetAllInactiveProfiles(authOption, _ DateTime.Now.Subtract(New TimeSpan(inactiveDays, 0, 0, 0)), _ currentPage - 1, pageSize, totalProfiles) TotalProfilesLabel.Text = totalProfiles.ToString() totalPages = ((totalProfiles - 1) \ pageSize) + 1 ' Ensure that we do not navigate past the last page of Profiles. If currentPage > totalPages Then currentPage = totalPages GetProfiles() Return End If ProfileGrid.DataBind() CurrentPageLabel.Text = currentPage.ToString() TotalPagesLabel.Text = totalPages.ToString() If currentPage = totalPages Then NextButton.Visible = False Else NextButton.Visible = True End If If currentPage = 1 Then PreviousButton.Visible = False Else PreviousButton.Visible = True End If If totalProfiles <= 0 Then NavigationPanel.Visible = False Else NavigationPanel.Visible = True End If End Sub Public Sub NextButton_OnClick(sender As Object, args As EventArgs) currentPage = Convert.ToInt32(CurrentPageLabel.Text) currentPage += 1 GetProfiles() End Sub Public Sub PreviousButton_OnClick(sender As Object, args As EventArgs) currentPage = Convert.ToInt32(CurrentPageLabel.Text) currentPage -= 1 GetProfiles() End Sub Public Sub ModifyInactiveDaysButton_OnClick(sender As Object, args As EventArgs) GetProfiles() End Sub Public Sub AuthenticationOptionListBox_OnSelectedIndexChanged(sender As Object, args As EventArgs) authOption = GetAuthenticationOption() GetProfiles() End Sub Private Function GetAuthenticationOption() As ProfileAuthenticationOption If Not AuthenticationOptionListBox.SelectedItem Is Nothing Then Select Case AuthenticationOptionListBox.SelectedItem.Value Case "Anonymous" Return ProfileAuthenticationOption.Anonymous Case "Authenticated" return ProfileAuthenticationOption.Authenticated Case Else Return ProfileAuthenticationOption.All End Select End If Return ProfileAuthenticationOption.All End Function Public Sub DeleteAllInactiveButton_OnClick(sender As Object, args As EventArgs) deletedProfiles = provider.DeleteInactiveProfiles(authOption, _ DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0 ,0))) DeletedMessage.Text = deletedProfiles.ToString() & " profiles deleted." GetProfiles() End SUb </script> <html> <head> <title>Sample: Find Profiles</title> </head> <body> <form runat="server"> <h3>Profile List</h3> <table border=0 cellpadding=3 cellspacing=3> <tr> <td valign="top">Authentication Option</td> <td valign="top"><asp:ListBox id="AuthenticationOptionListBox" rows="3" runat="Server" AutoPostBack="True" OnSelectedIndexChanged="AuthenticationOptionListBox_OnSelectedIndexChanged"> <asp:ListItem value="All" selected="True">All</asp:ListItem> <asp:ListItem value="Authenticated">Authenticated</asp:ListItem> <asp:ListItem value="Anonymous">Anonymous</asp:ListItem> </asp:ListBox> </td> </tr> <tr> <td valign="top" width="160"> Number of Days for Profile to be considered "inactive"</td> <td valign="top" width="200"> <asp:TextBox id="InactiveDaysTextBox" runat="Server" MaxLength="3" Columns="3" /> <asp:Button id="ModifyInactiveDaysButton" runat="server" Text="Refresh Results" OnClick="ModifyInactiveDaysButton_OnClick" /><BR> <asp:Button id="DeleteAllInactiveButton" runat="Server" Text="Delete All Inactive Profiles" OnClick="DeleteAllInactiveButton_OnClick" /> </td> <td valign="top"> <asp:RequiredFieldValidator id="InactiveDaysRequiredValidator" runat="server" ControlToValidate="InactiveDaysTextBox" ForeColor="red" Display="Static" ErrorMessage="Required" /> <asp:RegularExpressionValidator id="InactiveDaysValidator" runat="server" ControlToValidate="InactiveDaysTextBox" ForeColor="red" Display="Static" ValidationExpression="[0-9]*" ErrorMessage="Inactive Days must be a whole number less than 1000 (e.g. 30, 120)" /> </td> </tr> <tr> <td><asp:Label id="DeletedMessage" runat="server" /></td> <td><asp:Label id="TotalProfilesLabel" runat="server" /> inactive profiles found.</td> </tr> </table> <asp:Panel id="NavigationPanel" Visible="False" runat="server"> <table border=0 cellpadding=3 cellspacing=3> <tr> <td width=100>Page <asp:Label id="CurrentPageLabel" runat="server" /> of <asp:Label id="TotalPagesLabel" runat="server" /></td> <td width=60><asp:LinkButton id="PreviousButton" Text="< Prev" OnClick="PreviousButton_OnClick" runat="server" /></td> <td width=60><asp:LinkButton id="NextButton" Text="Next >" OnClick="NextButton_OnClick" runat="server" /></td> </tr> </table> </asp:Panel> <asp:GridView id="ProfileGrid" runat="server" AutoGenerateColumns="False" OnRowCommand="ProfileGrid_Delete" CellPadding="2" CellSpacing="1" Gridlines="None"> <HeaderStyle BackColor="darkblue" ForeColor="white" /> <Columns> <asp:BoundField runat="server" HeaderText="User Name" DataField="Username" /> <asp:BoundField runat="server" HeaderText="Is Anonymous" DataField="IsAnonymous" /> <asp:BoundField runat="server" HeaderText="Last Updated" DataField="LastUpdatedDate" /> <asp:BoundField runat="server" HeaderText="Last Activity" DataField="LastActivityDate" /> <asp:ButtonField runat="server" HeaderText="Action" Text="Delete" ButtonType="Link" /> </Columns> </asp:GridView> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Profile" %> <script runat="server"> int pageSize = 5; int totalProfiles; int totalPages; int currentPage = 1; SqlProfileProvider provider; ProfileAuthenticationOption authOption; int inactiveDays = 120; int deletedProfiles = 0; public void Page_Load() { DeletedMessage.Text = ""; provider = (SqlProfileProvider)Profile.Providers["SqlProvider"]; authOption = GetAuthenticationOption(); if (!IsPostBack) { InactiveDaysTextBox.Text = inactiveDays.ToString(); GetProfiles(); } else { inactiveDays = Convert.ToInt32(InactiveDaysTextBox.Text); } } public void ProfileGrid_Delete(object sender, GridViewCommandEventArgs args) { // Retrieve user name selected. int index = Convert.ToInt32(args.CommandArgument); string username = ProfileGrid.Rows[index].Cells[0].Text; provider.DeleteProfiles(new string[] {username}); DeletedMessage.Text = "1 profile deleted."; // Refresh profile list. currentPage = Convert.ToInt32(CurrentPageLabel.Text); GetProfiles(); } private void GetProfiles() { ProfileGrid.DataSource = provider.GetAllInactiveProfiles(authOption, DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0, 0)), currentPage - 1, pageSize, out totalProfiles); TotalProfilesLabel.Text = totalProfiles.ToString(); totalPages = ((totalProfiles - 1) / pageSize) + 1; // Ensure that we do not navigate past the last page of Profiles. if (currentPage > totalPages) { currentPage = totalPages; GetProfiles(); return; } ProfileGrid.DataBind(); CurrentPageLabel.Text = currentPage.ToString(); TotalPagesLabel.Text = totalPages.ToString(); if (currentPage == totalPages) NextButton.Visible = false; else NextButton.Visible = true; if (currentPage == 1) PreviousButton.Visible = false; else PreviousButton.Visible = true; if (totalProfiles <= 0) NavigationPanel.Visible = false; else NavigationPanel.Visible = true; } public void NextButton_OnClick(object sender, EventArgs args) { currentPage = Convert.ToInt32(CurrentPageLabel.Text); currentPage++; GetProfiles(); } public void PreviousButton_OnClick(object sender, EventArgs args) { currentPage = Convert.ToInt32(CurrentPageLabel.Text); currentPage--; GetProfiles(); } public void ModifyInactiveDaysButton_OnClick(object sender, EventArgs args) { GetProfiles(); } public void AuthenticationOptionListBox_OnSelectedIndexChanged(object sender, EventArgs args) { authOption = GetAuthenticationOption(); GetProfiles(); } private ProfileAuthenticationOption GetAuthenticationOption() { if (AuthenticationOptionListBox.SelectedItem != null) { switch (AuthenticationOptionListBox.SelectedItem.Value) { case "Anonymous": return ProfileAuthenticationOption.Anonymous; break; case "Authenticated": return ProfileAuthenticationOption.Authenticated; break; default: return ProfileAuthenticationOption.All; break; } } return ProfileAuthenticationOption.All; } public void DeleteAllInactiveButton_OnClick(object sender, EventArgs args) { deletedProfiles = provider.DeleteInactiveProfiles(authOption, DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0 ,0))); DeletedMessage.Text = deletedProfiles.ToString() + " profiles deleted."; GetProfiles(); } </script> <html> <head> <title>Sample: Find Profiles</title> </head> <body> <form runat="server"> <h3>Profile List</h3> <table border=0 cellpadding=3 cellspacing=3> <tr> <td valign="top">Authentication Option</td> <td valign="top"><asp:ListBox id="AuthenticationOptionListBox" rows="3" runat="Server" AutoPostBack="true" OnSelectedIndexChanged="AuthenticationOptionListBox_OnSelectedIndexChanged"> <asp:ListItem value="All" selected="True">All</asp:ListItem> <asp:ListItem value="Authenticated">Authenticated</asp:ListItem> <asp:ListItem value="Anonymous">Anonymous</asp:ListItem> </asp:ListBox> </td> </tr> <tr> <td valign="top" width="160"> Number of Days for Profile to be considered "inactive"</td> <td valign="top" width="200"> <asp:TextBox id="InactiveDaysTextBox" runat="Server" MaxLength="3" Columns="3" /> <asp:Button id="ModifyInactiveDaysButton" runat="server" Text="Refresh Results" OnClick="ModifyInactiveDaysButton_OnClick" /><BR> <asp:Button id="DeleteAllInactiveButton" runat="Server" Text="Delete All Inactive Profiles" OnClick="DeleteAllInactiveButton_OnClick" /> </td> <td valign="top"> <asp:RequiredFieldValidator id="InactiveDaysRequiredValidator" runat="server" ControlToValidate="InactiveDaysTextBox" ForeColor="red" Display="Static" ErrorMessage="Required" /> <asp:RegularExpressionValidator id="InactiveDaysValidator" runat="server" ControlToValidate="InactiveDaysTextBox" ForeColor="red" Display="Static" ValidationExpression="[0-9]*" ErrorMessage="Inactive Days must be a whole number less than 1000 (e.g. 30, 120)" /> </td> </tr> <tr> <td><asp:Label id="DeletedMessage" runat="server" /></td> <td><asp:Label id="TotalProfilesLabel" runat="server" /> inactive profiles found.</td> </tr> </table> <asp:Panel id="NavigationPanel" Visible="false" runat="server"> <table border=0 cellpadding=3 cellspacing=3> <tr> <td width=100>Page <asp:Label id="CurrentPageLabel" runat="server" /> of <asp:Label id="TotalPagesLabel" runat="server" /></td> <td width=60><asp:LinkButton id="PreviousButton" Text="< Prev" OnClick="PreviousButton_OnClick" runat="server" /></td> <td width=60><asp:LinkButton id="NextButton" Text="Next >" OnClick="NextButton_OnClick" runat="server" /></td> </tr> </table> </asp:Panel> <asp:GridView id="ProfileGrid" runat="server" AutoGenerateColumns="false" OnRowCommand="ProfileGrid_Delete" CellPadding="2" CellSpacing="1" Gridlines="None"> <HeaderStyle BackColor="darkblue" ForeColor="white" /> <Columns> <asp:BoundField runat="server" HeaderText="User Name" DataField="Username" /> <asp:BoundField runat="server" HeaderText="Is Anonymous" DataField="IsAnonymous" /> <asp:BoundField runat="server" HeaderText="Last Updated" DataField="LastUpdatedDate" /> <asp:BoundField runat="server" HeaderText="Last Activity" DataField="LastActivityDate" /> <asp:ButtonField runat="server" HeaderText="Action" Text="Delete" ButtonType="Link" /> </Columns> </asp:GridView> </form> </body> </html>

System.Web.Profile.ProfileInfoCollection


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ProfileInfoCollection コンストラクタ
アセンブリ: System.Web (system.web.dll 内)


ProfileInfoCollection はプロファイル プロバイダ実装側によって構築され、ProfileProvider 抽象クラスの GetAllProfiles、GetAllInactiveProfiles、FindProfilesByUserName、および FindInactiveProfilesByUserName の各メソッドによって返されます。

データ ストア内のユーザー プロファイルに対し、ProfileInfoCollection を作成する ProfileProvider の実装例については「プロファイル プロバイダの実装」を参照してください。

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ProfileInfoCollection プロパティ

名前 | 説明 | |
---|---|---|
![]() | Count | コレクション内の ProfileInfo オブジェクト数を取得します。 |
![]() | IsSynchronized | プロファイル情報のコレクションがスレッド セーフかどうかを示す値を取得します。 |
![]() | Item | 指定した UserName によって参照される、コレクション内の ProfileInfo オブジェクトを取得します。 |
![]() | SyncRoot | 同期のルートを取得します。 |

ProfileInfoCollection メソッド

名前 | 説明 | |
---|---|---|
![]() | Add | 指定した ProfileInfo オブジェクトをコレクションに追加します。 |
![]() | Clear | コレクションからすべての ProfileInfo オブジェクトを削除します。 |
![]() | CopyTo | オーバーロードされます。 ProfileInfoCollection を 1 次元配列にコピーします。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetEnumerator | ProfileInfoCollection を反復処理できる列挙子を取得します。 |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | Remove | 指定したユーザー名の ProfileInfo オブジェクトをコレクションから削除します。 |
![]() | SetReadOnly | ProfileInfoCollection の内容を読み取り専用にします。 |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

ProfileInfoCollection メンバ
ProfileInfoCollection データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | Count | コレクション内の ProfileInfo オブジェクト数を取得します。 |
![]() | IsSynchronized | プロファイル情報のコレクションがスレッド セーフかどうかを示す値を取得します。 |
![]() | Item | 指定した UserName によって参照される、コレクション内の ProfileInfo オブジェクトを取得します。 |
![]() | SyncRoot | 同期のルートを取得します。 |

名前 | 説明 | |
---|---|---|
![]() | Add | 指定した ProfileInfo オブジェクトをコレクションに追加します。 |
![]() | Clear | コレクションからすべての ProfileInfo オブジェクトを削除します。 |
![]() | CopyTo | オーバーロードされます。 ProfileInfoCollection を 1 次元配列にコピーします。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetEnumerator | ProfileInfoCollection を反復処理できる列挙子を取得します。 |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | Remove | 指定したユーザー名の ProfileInfo オブジェクトをコレクションから削除します。 |
![]() | SetReadOnly | ProfileInfoCollection の内容を読み取り専用にします。 |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

- ProfileInfoCollectionのページへのリンク