SqlProfileProvider.DeleteProfiles Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menghapus properti profil dan informasi dari sumber data.
Overload
DeleteProfiles(String[]) |
Menghapus properti profil dan informasi dari sumber data untuk daftar nama pengguna yang disediakan. |
DeleteProfiles(ProfileInfoCollection) |
Menghapus properti profil dan informasi untuk daftar profil yang disediakan dari sumber data. |
DeleteProfiles(String[])
Menghapus properti profil dan informasi dari sumber data untuk daftar nama pengguna yang disediakan.
public:
override int DeleteProfiles(cli::array <System::String ^> ^ usernames);
public override int DeleteProfiles (string[] usernames);
override this.DeleteProfiles : string[] -> int
Public Overrides Function DeleteProfiles (usernames As String()) As Integer
Parameter
- usernames
- String[]
Array string nama pengguna untuk profil yang akan dihapus.
Mengembalikan
Jumlah profil yang dihapus dari sumber data.
Pengecualian
Panjangnya usernames
adalah nol.
-atau-
Salah satu item di usernames
adalah string kosong (""), melebihi panjang 256 karakter, atau berisi koma.
-atau-
Dua item atau lebih dalam usernames
memiliki nilai yang sama.
Contoh
Contoh kode berikut menunjukkan halaman ASP.NET yang mengelola profil tidak aktif. GridView Kontrol menampilkan profil tidak aktif yang dikembalikan. Setiap baris GridView kontrol menyertakan tombol yang menghapus profil untuk baris tersebut dari sumber data dengan panggilan ke DeleteProfiles metode .
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Profile" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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 xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Find Profiles</title>
</head>
<body>
<form id="form1" 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" style="width:160">
Number of Days for Profile to be considered "inactive"</td>
<td valign="top" style="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 style="width:100">Page <asp:Label id="CurrentPageLabel" runat="server" />
of <asp:Label id="TotalPagesLabel" runat="server" /></td>
<td style="width:60"><asp:LinkButton id="PreviousButton" Text="< Prev"
OnClick="PreviousButton_OnClick" runat="server" /></td>
<td style="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 HeaderText="User Name" DataField="Username" />
<asp:BoundField HeaderText="Is Anonymous" DataField="IsAnonymous" />
<asp:BoundField HeaderText="Last Updated" DataField="LastUpdatedDate" />
<asp:BoundField HeaderText="Last Activity" DataField="LastActivityDate" />
<asp:ButtonField HeaderText="Action" Text="Delete" ButtonType="Link" />
</Columns>
</asp:GridView>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Profile" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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 xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Find Profiles</title>
</head>
<body>
<form id="form1" 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" style="width:160">
Number of Days for Profile to be considered "inactive"</td>
<td valign="top" style="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 style="width:100">Page <asp:Label id="CurrentPageLabel" runat="server" />
of <asp:Label id="TotalPagesLabel" runat="server" /></td>
<td style="width:60"><asp:LinkButton id="PreviousButton" Text="< Prev"
OnClick="PreviousButton_OnClick" runat="server" /></td>
<td style="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 HeaderText="User Name" DataField="Username" />
<asp:BoundField HeaderText="Is Anonymous" DataField="IsAnonymous" />
<asp:BoundField HeaderText="Last Updated" DataField="LastUpdatedDate" />
<asp:BoundField HeaderText="Last Activity" DataField="LastActivityDate" />
<asp:ButtonField HeaderText="Action" Text="Delete" ButtonType="Link" />
</Columns>
</asp:GridView>
</form>
</body>
</html>
Keterangan
Metode menghapus DeleteProfiles semua informasi profil dan properti untuk profil yang ditentukan dari sumber data untuk aplikasi yang ditentukan oleh applicationName
atribut dalam file konfigurasi. Daftar profil yang akan dihapus ditentukan sebagai array string nama pengguna. Jika properti profil dan informasi ada di sumber data untuk nama pengguna dalam usernames
parameter, mereka akan dihapus.
Nilai yang dikembalikan mungkin berbeda dari panjang array yang ditentukan dari usernames
. Ini menunjukkan bahwa beberapa profil dalam array usernames
yang ditentukan sudah dihapus dari penyimpanan data.
Pembaruan database yang dilakukan selama panggilan ke DeleteProfiles metode dilakukan dalam transaksi. Jika terjadi kesalahan, transaksi digulung balik dan tidak ada pembaruan yang dilakukan.
Lihat juga
Berlaku untuk
DeleteProfiles(ProfileInfoCollection)
Menghapus properti profil dan informasi untuk daftar profil yang disediakan dari sumber data.
public:
override int DeleteProfiles(System::Web::Profile::ProfileInfoCollection ^ profiles);
public override int DeleteProfiles (System.Web.Profile.ProfileInfoCollection profiles);
override this.DeleteProfiles : System.Web.Profile.ProfileInfoCollection -> int
Public Overrides Function DeleteProfiles (profiles As ProfileInfoCollection) As Integer
Parameter
- profiles
- ProfileInfoCollection
Yang ProfileInfoCollection berisi informasi profil untuk profil yang akan dihapus.
Mengembalikan
Jumlah profil yang dihapus dari sumber data.
Pengecualian
profiles
memiliki Count nilai nol.
-atau-
Salah ProfileInfo satu objek di profiles
memiliki UserName yang merupakan string kosong (""), melebihi panjang 256 karakter, atau berisi koma.
Contoh
Contoh kode berikut memungkinkan pengguna untuk mencari profil menggunakan FindProfilesByUserName metode dan FindInactiveProfilesByUserName . Pengguna kemudian dapat menghapus profil yang dikembalikan dengan panggilan ke DeleteProfiles metode .
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Profile" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
int pageSize = 5;
int totalProfiles;
int totalPages;
int currentPage = 1;
ProfileAuthenticationOption authOption;
SqlProfileProvider provider;
int inactiveDays = 90;
public void Page_Load()
{
InactiveDaysLabel.Text = inactiveDays.ToString();
authOption = GetAuthenticationOption();
provider = (SqlProfileProvider)Profile.Providers["SqlProvider"];
InactiveProfilesLabel.Text = provider.GetNumberOfInactiveProfiles(authOption,
DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0, 0))).ToString();
DeletedMessage.Text = "";
}
private ProfileInfoCollection GetProfiles()
{
ProfileInfoCollection profiles;
if (ShowInactiveCheckBox.Checked)
{
profiles = provider.FindInactiveProfilesByUserName(authOption,
UserNameTextBox.Text,
DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0, 0)),
currentPage - 1, pageSize, out totalProfiles);
}
else
{
profiles = provider.FindProfilesByUserName(authOption,
UserNameTextBox.Text,
currentPage - 1, pageSize, out totalProfiles);
}
return profiles;
}
private void ShowProfiles()
{
if (UserNameTextBox.Text.Trim() == "")
{
Msg.Text = "Please specify a user name.";
NavigationPanel.Visible = false;
ProfileGrid.Visible = false;
return;
}
Msg.Text = "";
ProfileGrid.Visible = true;
ProfileGrid.DataSource = GetProfiles();
totalPages = ((totalProfiles - 1) / pageSize) + 1;
// Ensure that we do not navigate past the last page of users.
if (currentPage > totalPages)
{
currentPage = totalPages;
ShowProfiles();
return;
}
ProfileGrid.DataBind();
TotalProfilesLabel.Text = totalProfiles.ToString();
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++;
ShowProfiles();
}
public void PreviousButton_OnClick(object sender, EventArgs args)
{
currentPage = Convert.ToInt32(CurrentPageLabel.Text);
currentPage--;
ShowProfiles();
}
public void GoButton_OnClick(object sender, EventArgs args)
{
currentPage = 1;
ShowProfiles();
}
public void ShowInactiveCheckBox_OnCheckedChanged(object sender, EventArgs args)
{
ShowProfiles();
}
public void DeleteButton_OnClick(object sender, EventArgs args)
{
provider.DeleteProfiles(GetProfiles());
DeletedMessage.Text = totalProfiles.ToString() + " profiles deleted.";
ShowProfiles();
}
public void AuthenticationOptionListBox_OnSelectedIndexChanged(object sender, EventArgs args)
{
authOption = GetAuthenticationOption();
ShowProfiles();
}
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;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Find Profiles</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Profile List</h3>
<asp:Label id="Msg" runat="Server" ForeColor="red" /><br />
<table border="0" cellpadding="3" cellspacing="3">
<tr>
<td valign="top">UserName to Search for:</td>
<td valign="top" colspan="2">
<asp:TextBox id="UserNameTextBox" runat="server" />
<asp:Button id="GoButton" Text=" Go " OnClick="GoButton_OnClick" runat="server" /><br />
</td>
</tr>
<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>
<td valign="top"><asp:CheckBox id="ShowInactiveCheckBox" Checked="false"
AutoPostBack="true" runat="server"
OnCheckedChanged="ShowInactiveCheckBox_OnCheckedChanged" />
Show profiles inactive for
<asp:Label id="InactiveDaysLabel" runat="server" />
days only.<br />
There are <asp:Label id="InactiveProfilesLabel" runat="server" />
inactive profiles.
</td>
</tr>
<tr>
<td><asp:Button id="DeleteButton" runat="server"
Text="Delete Profiles" OnClick="DeleteButton_OnClick" />
<br /><i>(based on search results)</i>
</td>
<td valign="top"><asp:Label id="DeletedMessage" runat="server" /></td>
</tr>
</table>
<asp:Panel id="NavigationPanel" Visible="false" runat="server">
<asp:Label id="TotalProfilesLabel" runat="server" /> profile(s) found.
<table border="0" cellpadding="3" cellspacing="3">
<tr>
<td style="width:100">Page <asp:Label id="CurrentPageLabel" runat="server" />
of <asp:Label id="TotalPagesLabel" runat="server" /></td>
<td style="width:60"><asp:LinkButton id="PreviousButton" Text="< Prev"
OnClick="PreviousButton_OnClick" runat="server" /></td>
<td style="width:60"><asp:LinkButton id="NextButton" Text="Next >"
OnClick="NextButton_OnClick" runat="server" /></td>
</tr>
</table>
</asp:Panel>
<asp:DataGrid id="ProfileGrid" runat="server"
CellPadding="2" CellSpacing="1"
Gridlines="Both">
<HeaderStyle BackColor="darkblue" ForeColor="white" />
</asp:DataGrid>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Profile" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Dim pageSize As Integer = 5
Dim totalProfiles As Integer
Dim totalPages As Integer
Dim currentPage As Integer = 1
Dim authOption As ProfileAuthenticationOption
Dim provider As SqlProfileProvider
Dim inactiveDays As Integer = 90
Public Sub Page_Load()
InactiveDaysLabel.Text = inactiveDays.ToString()
authOption = GetAuthenticationOption()
provider = CType(Profile.Providers("SqlProvider"), SqlProfileProvider)
InactiveProfilesLabel.Text = provider.GetNumberOfInactiveProfiles(authOption, _
DateTime.Now.Subtract(New TimeSpan(inactiveDays, 0, 0, 0))).ToString()
DeletedMessage.Text = ""
End Sub
Private Function GetProfiles() As ProfileInfoCollection
Dim profiles As ProfileInfoCollection
If ShowInactiveCheckBox.Checked Then
profiles = provider.FindInactiveProfilesByUserName(authOption, _
UserNameTextBox.Text, _
DateTime.Now.Subtract(New TimeSpan(inactiveDays, 0, 0, 0)), _
currentPage - 1, pageSize, totalProfiles)
Else
profiles = provider.FindProfilesByUserName(authOption, _
UserNameTextBox.Text, _
currentPage - 1, pageSize, totalProfiles)
End If
Return profiles
End Function
Private Sub ShowProfiles()
If UserNameTextBox.Text.Trim() = "" Then
Msg.Text = "Please specify a user name."
NavigationPanel.Visible = False
ProfileGrid.Visible = False
Return
End If
Msg.Text = ""
ProfileGrid.Visible = True
ProfileGrid.DataSource = GetProfiles()
totalPages = ((totalProfiles - 1) \ pageSize) + 1
' Ensure that we do not navigate past the last page of users.
If currentPage > totalPages Then
currentPage = totalPages
ShowProfiles()
Return
End If
ProfileGrid.DataBind()
TotalProfilesLabel.Text = totalProfiles.ToString()
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
ShowProfiles()
End Sub
Public Sub PreviousButton_OnClick(sender As Object, args As EventArgs)
currentPage = Convert.ToInt32(CurrentPageLabel.Text)
currentPage -= 1
ShowProfiles()
End Sub
Public Sub GoButton_OnClick(sender As Object, args As EventArgs)
currentPage = 1
ShowProfiles()
End Sub
Public Sub ShowInactiveCheckBox_OnCheckedChanged(sender As Object, args As EventArgs)
ShowProfiles()
End Sub
Public Sub DeleteButton_OnClick(sender As Object, args As EventArgs)
provider.DeleteProfiles(GetProfiles())
DeletedMessage.Text = totalProfiles.ToString() & " profiles deleted."
ShowProfiles()
End Sub
Public Sub AuthenticationOptionListBox_OnSelectedIndexChanged(sender As Object, args As EventArgs)
authOption = GetAuthenticationOption()
ShowProfiles()
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
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample Find Profiles</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Profile List</h3>
<asp:Label id="Msg" runat="Server" ForeColor="red" /><br />
<table border="0" cellpadding="3" cellspacing="3">
<tr>
<td valign="top">UserName to Search for</td>
<td valign="top" colspan="2">
<asp:TextBox id="UserNameTextBox" runat="server" />
<asp:Button id="GoButton" Text=" Go " OnClick="GoButton_OnClick" runat="server" /><br />
</td>
</tr>
<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>
<td valign="top"><asp:CheckBox id="ShowInactiveCheckBox" Checked="False"
AutoPostBack="True" runat="server"
OnCheckedChanged="ShowInactiveCheckBox_OnCheckedChanged" />
Show profiles inactive for
<asp:Label id="InactiveDaysLabel" runat="server" />
days only.<br />
There are <asp:Label id="InactiveProfilesLabel" runat="server" />
inactive profiles.
</td>
</tr>
<tr>
<td><asp:Button id="DeleteButton" runat="server"
Text="Delete Profiles" OnClick="DeleteButton_OnClick" />
<br /><i>(based on search results)</i>
</td>
<td valign="top"><asp:Label id="DeletedMessage" runat="server" /></td>
</tr>
</table>
<asp:Panel id="NavigationPanel" Visible="False" runat="server">
<asp:Label id="TotalProfilesLabel" runat="server" /> profile(s) found.
<table border="0" cellpadding="3" cellspacing="3">
<tr>
<td style="width:100">Page <asp:Label id="CurrentPageLabel" runat="server" />
of <asp:Label id="TotalPagesLabel" runat="server" /></td>
<td style="width:60"><asp:LinkButton id="PreviousButton" Text="< Prev"
OnClick="PreviousButton_OnClick" runat="server" /></td>
<td style="width:60"><asp:LinkButton id="NextButton" Text="Next >"
OnClick="NextButton_OnClick" runat="server" /></td>
</tr>
</table>
</asp:Panel>
<asp:DataGrid id="ProfileGrid" runat="server"
CellPadding="2" CellSpacing="1"
Gridlines="Both">
<HeaderStyle BackColor="darkblue" ForeColor="white" />
</asp:DataGrid>
</form>
</body>
</html>
Keterangan
Metode menghapus DeleteProfiles semua informasi profil dan properti untuk profil yang ditentukan dari sumber data untuk aplikasi yang ditentukan oleh applicationName
atribut dalam file konfigurasi. Daftar profil yang akan dihapus ditentukan menggunakan ProfileInfoCollection yang diteruskan sebagai profiles
parameter .
ProfileInfoCollection dapat dikembalikan dari GetAllProfilesmetode , , GetAllInactiveProfilesFindProfilesByUserName, dan FindInactiveProfilesByUserName .
Nilai yang dikembalikan mungkin berbeda dari Count nilai untuk yang disediakan ProfileInfoCollection. Ini menunjukkan bahwa beberapa profil dalam yang ditentukan ProfileInfoCollection tidak lagi ditemukan di penyimpanan data.
Pembaruan database yang dilakukan selama panggilan ke DeleteProfiles metode dilakukan dalam transaksi. Jika terjadi kesalahan, transaksi digulung balik dan tidak ada pembaruan yang dilakukan.