SqlMembershipProvider.FindUsersByEmail(String, Int32, Int32, Int32) 方法     
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回成员资格用户集合,这些用户的电子邮件地址字段包含指定的电子邮件地址。
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
 
要搜索的电子邮件地址。
- pageIndex
 - Int32
 
要返回的结果页的索引。 
              pageIndex 从零开始。
- pageSize
 - Int32
 
要返回的结果页的大小。
- totalRecords
 - Int32
 
匹配用户的总数。
返回
包含一页 pageSizeMembershipUser 对象的 MembershipUserCollection,这些对象从 pageIndex 指定的页开始。
例外
              emailToMatch 的长度超过 256 个字符。
- 或 -
              pageIndex 小于零。
- 或 -
              pageSize 小于一。
- 或 -
              pageIndex 乘 pageSize 以加 pageSize 减 1 将超过 Int32.MaxValue。
示例
下面的代码示例使用 FindUsersByEmail 方法检索成员身份用户信息,并在数据页中显示结果。
注意
此示例使用 Membership 类调用 SqlMembershipProvider 指定为 defaultProvider Web.config 文件中的 。 如果需要以 类型 SqlMembershipProvider的形式访问默认提供程序,则可以强制转换 Provider 类的 Membership 属性。 若要以特定提供程序类型的形式访问其他配置的提供程序,可以使用 类的 Membership 属性按其配置的名称Providers对其进行访问,并将其强制转换为特定提供程序类型。
<%@ 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返回成员身份用户列表,其中的电子邮件地址包含与为配置的 ApplicationName提供的 emailToMatch 匹配项。
使用 SqlMembershipProvider LIKE 子句搜索与参数值匹配 emailToMatch 的用户名。 参数值中可以包含 SQL Server 通配符。 例如,如果 emailToMatch 参数设置为“”address@example.com,则返回电子邮件地址为“”address@example.com的用户的信息(如果存在)。 
              emailToMatch如果 参数设置为“%@example.com”,则返回电子邮件地址为“address@example.com”、“address2@example.com”、“admin@example.com”等的用户的信息。
返回 FindUsersByEmail 的结果受 pageIndex 和 pageSize 参数的约束。 参数pageSize标识在 中MembershipUserCollection返回的最大对象数MembershipUser。 参数 pageIndex 标识要返回的结果页,其中 0 表示第一页。 参数 totalRecords 是一个 out 参数,它设置为已配置 applicationName的成员身份用户总数。 例如,如果配置的 applicationName有 13 个用户,并且 pageIndex 值为 1,值为 pageSize 5,则 MembershipUserCollection 返回的 将包含返回的第六个到第十个用户。 参数 totalRecords 将设置为 13。
删除 emailToMatch 参数值的前导和尾随空格。