SqlMembershipProvider.FindUsersByName(String, Int32, Int32, Int32) Método

Definição

Obtém uma coleção de usuários associados em que o nome de usuário contém o nome de usuário especificado para corresponder.Gets a collection of membership users where the user name contains the specified user name to match.

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

Parâmetros

usernameToMatch
String

O nome de usuário a ser pesquisado.The user name to search for.

pageIndex
Int32

O índice da página de resultados a serem retornados.The index of the page of results to return. pageIndex é baseado em zero.pageIndex is zero-based.

pageSize
Int32

O tamanho da página de resultados a ser retornada.The size of the page of results to return.

totalRecords
Int32

Quando este método retorna, ele contém o número total de usuários correspondidos.When this method returns, contains the total number of matched users.

Retornos

MembershipUserCollection

Um MembershipUserCollection que contém uma página de objetos pageSizeMembershipUser começando na página especificada por pageIndex.A MembershipUserCollection that contains a page of pageSizeMembershipUser objects beginning at the page specified by pageIndex.

Exceções

usernameToMatch é uma cadeia de caracteres vazia (“”) ou com mais de 256 caracteres.usernameToMatch is an empty string ("") or is longer than 256 characters.

- ou --or- pageIndex é menor que zero.pageIndex is less than zero.

- ou --or- pageSize é menor que 1.pageSize is less than 1.

- ou --or- pageIndex multiplicado por pageSize mais pageSize menos um excede MaxValue.pageIndex multiplied by pageSize plus pageSize minus one exceeds MaxValue.

usernameToMatch é null.usernameToMatch is null.

Exemplos

O exemplo de código a seguir usa o FindUsersByName método para recuperar informações de usuário de associação e exibe os resultados em páginas de dados.The following code example uses the FindUsersByName method to retrieve membership user information and displays the results in pages of data.

Observação

Este exemplo usa System. Web. Security. SqlMembershipProvider para chamar o SqlMembershipProvider especificado como o defaultProvider no arquivo de Web.config.This example uses System.Web.Security.SqlMembershipProvider to call the SqlMembershipProvider specified as the defaultProvider in the Web.config file. Se você precisar acessar o provedor padrão como o tipo SqlMembershipProvider , poderá converter a Provider propriedade da Membership classe.If you need to access the default provider as the type SqlMembershipProvider, you can cast the Provider property of the Membership class. Para acessar outros provedores configurados como um tipo de provedor específico, você pode acessá-los pelo nome configurado com a Providers propriedade da Membership classe e convertê-los como o tipo de provedor específico.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.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>

Comentários

FindUsersByName Retorna uma lista de usuários de associação para os quais o nome de usuário contém uma correspondência com o fornecido usernameToMatch para o configurado ApplicationName .FindUsersByName returns a list of membership users for which the user name contains a match with the supplied usernameToMatch for the configured ApplicationName.

O SqlMembershipProvider procura um nome de usuário que corresponda ao usernameToMatch valor do parâmetro, usando a cláusula LIKE.The SqlMembershipProvider searches for a user name that matches the usernameToMatch parameter value, using the LIKE clause. SQL Server caracteres curinga podem ser incluídos com o valor do parâmetro.SQL Server wildcard characters can be included with the parameter value. Por exemplo, se o usernameToMatch parâmetro for definido como "Usuário1", as informações do usuário para o usuário com o nome de usuário "Usuário1" serão retornadas, se existirem.For example, if the usernameToMatch parameter is set to "user1", then user information for the user with the user name of "user1" is returned, if it exists. Se o usernameToMatch parâmetro for definido como "usuário%", as informações do usuário para usuários com o nome de usuário "Usuário1", "Usuário2", "user_admin" e assim por diante serão retornadas.If the usernameToMatch parameter is set to "user%", then user information for users with the user name of "user1", "user2", "user_admin", and so on are returned.

Os resultados retornados por FindUsersByName são restritos pelos pageIndex pageSize parâmetros e.The results returned by FindUsersByName are constrained by the pageIndex and pageSize parameters. O pageSize parâmetro identifica o número máximo de MembershipUser objetos a serem retornados no MembershipUserCollection .The pageSize parameter identifies the maximum number of MembershipUser objects to return in the MembershipUserCollection. O pageIndex parâmetro identifica qual página de resultados retornar, onde zero identifica a primeira página.The pageIndex parameter identifies which page of results to return, where zero identifies the first page. O totalRecords parâmetro é um out parâmetro que é definido como o número total de usuários da Associação para o configurado applicationName .The totalRecords parameter is an out parameter that is set to the total number of membership users for the configured applicationName. Por exemplo, se houver 13 usuários para o configurado applicationName , e o pageIndex valor for 1 com um pageSize de 5, o MembershipUserCollection retornado conterá o sexto até o décimo dos usuários retornados.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 the tenth users returned. O totalRecords parâmetro seria definido como 13.The totalRecords parameter would be set to 13.

Os espaços à esquerda e à direita são cortados do valor de parâmetro usernameToMatch.Leading and trailing spaces are trimmed from the usernameToMatch parameter value.

Aplica-se a