SqlMembershipProvider.FindUsersByName(String, Int32, Int32, Int32) 方法

定義

取得成員資格使用者的集合,其中的使用者名稱包含必須符合的特定使用者名稱。

public:
 override System::Web::Security::MembershipUserCollection ^ FindUsersByName(System::String ^ usernameToMatch, int pageIndex, int pageSize, [Runtime::InteropServices::Out] int % totalRecords);
public override System.Web.Security.MembershipUserCollection FindUsersByName (string usernameToMatch, int pageIndex, int pageSize, out int totalRecords);
override this.FindUsersByName : string * int * int * int -> System.Web.Security.MembershipUserCollection
Public Overrides Function FindUsersByName (usernameToMatch As String, pageIndex As Integer, pageSize As Integer, ByRef totalRecords As Integer) As MembershipUserCollection

參數

usernameToMatch
String

要搜尋的使用者名稱。

pageIndex
Int32

要傳回的結果頁面索引。 pageIndex 以零為起始。

pageSize
Int32

要傳回的結果網頁大小。

totalRecords
Int32

傳回這個方法時,其中包含相符使用者的總數。

傳回

MembershipUserCollection,其中包含 pageSizeMembershipUser 物件的頁面,從 pageIndex 指定的頁面開始。

例外狀況

usernameToMatch 是空字串 ("") 或長於 256 個字元。

-或-

pageIndex 小於零。

-或-

pageSize 小於 1。

-或-

pageIndexpageSize 以加 pageSize 減一超過 Int32.MaxValue

usernameToMatchnull

範例

下列程式碼範例會 FindUsersByName 使用 方法來擷取成員資格使用者資訊,並在資料頁面中顯示結果。

注意

這個範例會使用 System.Web.Security.SqlMembershipProvider 來呼叫 SqlMembershipProvider 指定做為 defaultProvider Web.config 檔案中的 。 如果您需要存取預設提供者做為 類型 SqlMembershipProvider ,您可以轉換 Provider 類別的 Membership 屬性。 若要以特定提供者類型存取其他已設定的提供者,您可以使用 類別 ProvidersMembership 屬性來存取這些提供者,並將其轉換成特定提供者類型。

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!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 totalUsers;
int totalPages;
int currentPage = 1;

private void GetUsers()
{
  UserGrid.DataSource = Membership.FindUsersByName(UsernameTextBox.Text, 
                          currentPage - 1, pageSize, out totalUsers);
  totalPages = ((totalUsers - 1) / pageSize) + 1;

  // Ensure that we do not navigate past the last page of users.

  if (currentPage > totalPages)
  {
    currentPage = totalPages;
    GetUsers();
    return;
  }

  UserGrid.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 (totalUsers <= 0)
    NavigationPanel.Visible = false;
  else
    NavigationPanel.Visible = true;
}

public void NextButton_OnClick(object sender, EventArgs args)
{
  currentPage = Convert.ToInt32(CurrentPageLabel.Text);
  currentPage++;
  GetUsers();
}

public void PreviousButton_OnClick(object sender, EventArgs args)
{
  currentPage = Convert.ToInt32(CurrentPageLabel.Text);
  currentPage--;
  GetUsers();
}

public void GoButton_OnClick(object sender, EventArgs args)
{
  currentPage = 1;
  GetUsers();
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Find Users</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>User List</h3>

  Username to Search for: 
    <asp:TextBox id="UsernameTextBox" runat="server" />
    <asp:Button id="GoButton" Text=" Go " OnClick="GoButton_OnClick" runat="server" /><br />

  <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:DataGrid id="UserGrid" 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.Security" %>
<!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 totalUsers As Integer
Dim totalPages As Integer
Dim currentPage As Integer = 1

Private Sub GetUsers()
  UserGrid.DataSource = Membership.FindUsersByName(UsernameTextBox.Text, _
                          currentPage - 1, pageSize, totalUsers)

  totalPages = ((totalUsers - 1) \ pageSize) + 1

  ' Ensure that we do not navigate past the last page of users.

  If currentPage > totalPages Then
    currentPage = totalPages
    GetUsers()
    Return
  End If

  UserGrid.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 totalUsers <= 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
  GetUsers()
End Sub

Public Sub PreviousButton_OnClick(sender As Object, args As EventArgs)
  currentPage = Convert.ToInt32(CurrentPageLabel.Text)
  currentPage -= 1
  GetUsers()
End Sub

Public Sub GoButton_OnClick(sender As Object, args As EventArgs)
  currentPage = 1
  GetUsers()
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Find Users</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>User List</h3>

  Username to Search for: 
    <asp:TextBox id="UsernameTextBox" runat="server" />
    <asp:Button id="GoButton" Text=" Go " OnClick="GoButton_OnClick" runat="server" /><br />

  <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:DataGrid id="UserGrid" runat="server"
                CellPadding="2" CellSpacing="1"
                Gridlines="Both">
    <HeaderStyle BackColor="darkblue" ForeColor="white" />
  </asp:DataGrid>

</form>

</body>
</html>

備註

FindUsersByName 會傳回成員資格使用者的清單,其中使用者名稱包含符合所設定 usernameToMatchApplicationName 的 。

SqlMembershipProvider 使用 LIKE 子句搜尋符合 usernameToMatch 參數值的使用者名稱。 SQL Server萬用字元可以包含在參數值中。 例如,如果 usernameToMatch 參數設定為 「user1」,則會傳回使用者名稱為 「user1」 的使用者資訊,如果存在的話。 usernameToMatch如果參數設定為 「user%」,則會傳回使用者名稱為 「user1」、「user2」、「user_admin」 的使用者資訊等等。

FindUsersByName 回的結果受限於 pageIndexpageSize 參數。 參數 pageSize 會識別 在 中 MembershipUserCollection 傳回的物件 MembershipUser 數目上限。 參數 pageIndex 會識別要傳回的結果頁面,其中零會識別第一頁。 參數 totalRecords 是參數 out ,其設定為所設定 applicationName 的成員資格使用者總數。 例如,如果已設定 applicationName 的使用者有 13 個,且 pageIndex 值為 1 且 pageSize 值為 5,則 MembershipUserCollection 傳回的 會包含第六個到第十個傳回的使用者。 參數 totalRecords 會設定為 13。

會修剪 usernameToMatch 參數值中的前置空格和後端空格。

適用於

另請參閱