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

定义

返回成员资格用户集合,这些用户的电子邮件地址字段包含指定的电子邮件地址。Returns a collection of membership users for which the email address field contains the specified email address.

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

参数

emailToMatch
String

要搜索的电子邮件地址。The email address to search for.

pageIndex
Int32

要返回的结果页的索引。The index of the page of results to return. pageIndex 从零开始。pageIndex is zero-based.

pageSize
Int32

要返回的结果页的大小。The size of the page of results to return.

totalRecords
Int32

匹配用户的总数。The total number of matched users.

返回

MembershipUserCollection

包含一页 pageSizeMembershipUser 对象的 MembershipUserCollection,这些对象从 pageIndex 指定的页开始。A MembershipUserCollection that contains a page of pageSizeMembershipUser objects beginning at the page specified by pageIndex.

例外

emailToMatch 的长度超过 256 个字符。emailToMatch is longer than 256 characters.

- 或 --or- pageIndex 小于零。pageIndex is less than zero.

- 或 --or- pageSize 小于一。pageSize is less than one.

- 或 --or- pageIndex 乘以 pageSize,然后加上 pageSize 再减去 1 后得到的值大于 MaxValuepageIndex multiplied by pageSize plus pageSize minus one exceeds MaxValue.

示例

下面的代码示例使用 FindUsersByEmail 方法来检索成员资格用户信息,并在数据页中显示结果。The following code example uses the FindUsersByEmail method to retrieve membership user information and displays the results in pages of data.

备注

此示例使用 MembershipSqlMembershipProvider defaultProvider 在 Web.config 文件中调用指定的。This example uses the Membership class to call the SqlMembershipProvider specified as the defaultProvider in the Web.config file. 如果需要以类型访问默认提供程序 SqlMembershipProvider ,则可以强制转换 Provider 类的属性 MembershipIf you need to access the default provider as the type SqlMembershipProvider, you can cast the Provider property of the Membership class. 若要以特定的提供程序类型访问其他已配置的提供程序,可以使用类的属性访问这些提供程序, Providers Membership 并将其转换为特定的提供程序类型。To access other configured providers as a specific provider type, you can access them by their configured name with the Providers property of the Membership class and cast them as the specific provider type.

<%@ 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.FindUsersByEmail(EmailTextBox.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 by Email</title>
</head>
<body>

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

  Email address to Search for: 
    <asp:TextBox id="EmailTextBox" 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.FindUsersByEmail(EmailTextBox.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 by Email</title>
</head>
<body>

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

  Email address to Search for: 
    <asp:TextBox id="EmailTextBox" 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>

注解

FindUsersByEmail 返回一个成员资格用户的列表,其中的电子邮件地址包含与为配置的提供的匹配的匹配项 emailToMatch ApplicationNameFindUsersByEmail returns a list of membership users in which the email address contains a match with the supplied emailToMatch for the configured ApplicationName.

SqlMembershipProvider emailToMatch 使用 LIKE 子句搜索与参数值匹配的用户名。The SqlMembershipProvider searches for a user name that matches the emailToMatch parameter value, using the LIKE clause. 参数值中可以包含 SQL Server 通配符。SQL Server wildcard characters can be included in the parameter value. 例如,如果将 emailToMatch 参数设置为 " address@example.com ",则返回电子邮件地址为 "" 的用户的信息 address@example.com (如果存在)。For example, if the emailToMatch parameter is set to "address@example.com", then information for users with the email address "address@example.com" is returned, if it exists. 如果 emailToMatch 将参数设置为 "% @example.com ",则将返回电子邮件地址为 " address@example.com "、" address2@example.com "、"" 等的用户的信息 admin@example.com 。If the emailToMatch parameter is set to "%@example.com", then information for users with the email address "address@example.com", "address2@example.com", "admin@example.com", and so on is returned.

返回的结果 FindUsersByEmail 是由 pageIndex 和参数约束的 pageSizeThe results returned by FindUsersByEmail are constrained by the pageIndex and pageSize parameters. pageSize参数标识 MembershipUser 要在中返回的对象的最大数目 MembershipUserCollectionThe pageSize parameter identifies the maximum number of MembershipUser objects to return in the MembershipUserCollection. pageIndex参数标识要返回的结果页,其中零标识第一页。The pageIndex parameter identifies which page of results to return, where zero identifies the first page. totalRecords参数是一个 out 参数,该参数设置为已配置的成员资格用户的总数 applicationNameThe totalRecords parameter is an out parameter that is set to the total number of membership users for the configured applicationName. 例如,如果配置了13个用户 applicationName ,并且 pageIndex 值为1且为 pageSize 5,则 MembershipUserCollection 返回的将包含返回的第六到第十个用户。For example, if there are 13 users for the configured applicationName, and the pageIndex value was 1 with a pageSize of 5, the MembershipUserCollection returned would contain the sixth through tenth users returned. totalRecords参数将设置为13。The totalRecords parameter would be set to 13.

删除 emailToMatch 参数值的前导和尾随空格。Leading and trailing spaces are trimmed from the emailToMatch parameter value.

适用于