Ler em inglês

Compartilhar via


ObjectDataSourceFilteringEventHandler Delegar

Definição

Representa o método que manipulará o evento Filtering do controle ObjectDataSource.

C#
public delegate void ObjectDataSourceFilteringEventHandler(object sender, ObjectDataSourceFilteringEventArgs e);

Parâmetros

sender
Object

A fonte do evento, o ObjectDataSource.

Exemplos

Esta seção contém dois exemplos de código. O primeiro exemplo de código demonstra como exibir dados filtrados usando um ObjectDataSource controle para recuperar dados de um objeto comercial de camada intermediária e, em seguida, usando um GridView controle para exibir os resultados. O segundo exemplo de código fornece um exemplo de um objeto comercial de camada intermediária que é usado pelo primeiro exemplo de código.

O exemplo de código a seguir demonstra como exibir dados filtrados usando um ObjectDataSource controle para recuperar dados de um objeto comercial de camada intermediária e, em seguida, usando um GridView controle para exibir os resultados. O ObjectDataSource controle só pode filtrar dados quando o método que recupera os dados os recupera como um DataSet objeto ou DataTable . Por esse motivo, a SelectMethod propriedade identifica um método de objeto de negócios que recupera dados como um DataSet objeto ou DataTable .

O exemplo de código consiste em um TextBox controle, um GridView controle, o ObjectDataSource controle e um botão Enviar . Por padrão, o TextBox controle é preenchido com o nome de um dos funcionários da Northwind Traders. O GridView controle exibe informações sobre o funcionário identificado pelo nome no TextBox. Para recuperar dados de outro funcionário, no TextBox controle , digite o nome completo do funcionário e clique no botão Enviar .

A FilterExpression propriedade especifica uma expressão que é usada para filtrar os dados recuperados pelo método especificado pela SelectMethod propriedade . Ele usa espaços reservados de parâmetro que são avaliados para os parâmetros contidos na FilterParameters coleção. Neste exemplo, o espaço reservado do parâmetro é colocado entre aspas simples (') porque o tipo do parâmetro é um tipo de cadeia de caracteres que pode conter espaços. Se o tipo do parâmetro for numérico ou data, as aspas não serão necessárias. A FilterParameters coleção contém um parâmetro, um FormParameter objeto associado ao TextBox controle .

Se nenhum nome for especificado no TextBox controle, um novo parâmetro será adicionado à coleção para ParameterValues que a pesquisa seja bem-sucedida.

ASP.NET (C#)
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void ObjectDataSource1_Filtering(object sender, ObjectDataSourceFilteringEventArgs e)
    {
        if (Textbox1.Text == "")
        {
            e.ParameterValues.Clear();
            e.ParameterValues.Add("FullName", "Nancy Davolio");
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ObjectDataSource - C# Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <p>Show all users with the following name.</p>

        <asp:textbox id="Textbox1" runat="server" text="Nancy Davolio" />

        <asp:gridview
          id="GridView1"
          runat="server"
          datasourceid="ObjectDataSource1"
          autogeneratecolumns="False">
          <columns>
            <asp:boundfield headertext="ID" datafield="EmpID" />
            <asp:boundfield headertext="Name" datafield="FullName" />
            <asp:boundfield headertext="Street Address" datafield="Address" />
          </columns>
        </asp:gridview>

        <!-- Security Note: The ObjectDataSource uses a FormParameter,
             Security Note: which does not perform validation of input from the client. -->

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetAllEmployeesAsDataSet"
          typename="Samples.AspNet.CS.EmployeeLogic"
          filterexpression="FullName='{0}'" OnFiltering="ObjectDataSource1_Filtering">
            <filterparameters>
              <asp:formparameter name="FullName" formfield="Textbox1" defaultvalue="Nancy Davolio" />
            </filterparameters>
        </asp:objectdatasource>

        <p><asp:button id="Button1" runat="server" text="Search" /></p>

    </form>
  </body>
</html>

O exemplo de código a seguir fornece um exemplo de um objeto comercial de camada intermediária que o exemplo de código anterior usa. O exemplo de código consiste em duas classes básicas: EmployeeLogic e NorthwindEmployee. A EmployeeLogic classe encapsula a lógica de negócios e a NorthwindEmployee classe é uma classe de modelo que contém apenas a funcionalidade básica necessária para carregar e persistir dados da camada de dados. Para simplificar, a EmployeeLogic classe cria um conjunto estático de dados, em vez de recuperar os dados de uma camada de dados. Para obter um exemplo de trabalho completo, você deve compilar e usar essas classes com os exemplos de código Web Forms fornecidos.

C#
namespace Samples.AspNet.CS {

using System;
using System.Collections;
using System.Data;
using System.Web.UI.WebControls;
  //
  // EmployeeLogic is a stateless business object that encapsulates 
  // the operations you can perform on a NorthwindEmployee object.
  //
  public class EmployeeLogic {

    // Returns a collection of NorthwindEmployee objects.
    public static ICollection GetAllEmployees () {
      ArrayList data = new ArrayList();
           
      data.Add(new NorthwindEmployee(1,"Nancy","Davolio","507 - 20th Ave. E. Apt. 2A"));
      data.Add(new NorthwindEmployee(2,"Andrew","Fuller","908 W. Capital Way"));
      data.Add(new NorthwindEmployee(3,"Janet","Leverling","722 Moss Bay Blvd."));
      data.Add(new NorthwindEmployee(4,"Margaret","Peacock","4110 Old Redmond Rd."));
      data.Add(new NorthwindEmployee(5,"Steven","Buchanan","14 Garrett Hill"));
      data.Add(new NorthwindEmployee(6,"Michael","Suyama","Coventry House Miner Rd."));
      data.Add(new NorthwindEmployee(7,"Robert","King","Edgeham Hollow Winchester Way"));
      
      return data;
    }
    
    public static NorthwindEmployee GetEmployee(object anID) {
      ArrayList data = GetAllEmployees() as ArrayList;     
      int empID = Int32.Parse(anID.ToString());      
      return data[empID] as NorthwindEmployee;
    }

    // 
    // To support basic filtering, the employees cannot
    // be returned as an array of objects, rather as a 
    // DataSet of the raw data values. 
    public static DataSet GetAllEmployeesAsDataSet () {
      ICollection employees = GetAllEmployees();
      
      DataSet ds = new DataSet("Table");
      
      // Create the schema of the DataTable.
      DataTable dt = new DataTable();
      DataColumn dc;
      dc = new DataColumn("EmpID",   typeof(int));    dt.Columns.Add(dc);
      dc = new DataColumn("FullName",typeof(string)); dt.Columns.Add(dc);
      dc = new DataColumn("Address", typeof(string)); dt.Columns.Add(dc);
      
      // Add rows to the DataTable.
      DataRow row;
            
      foreach (NorthwindEmployee ne in employees) {                
        row = dt.NewRow();
        row["EmpID"]    = ne.EmpID;
        row["FullName"] = ne.FullName;
        row["Address"]  = ne.Address;
        dt.Rows.Add(row);
      } 
      // Add the complete DataTable to the DataSet.
      ds.Tables.Add(dt);
      
      return ds;
    }    
  }

  public class NorthwindEmployee {

    public NorthwindEmployee (int anID, 
                              string aFirstName,
                              string aLastName,
                              string anAddress) {
      ID = anID;
      firstName = aFirstName;
      lastName = aLastName;   
      address = anAddress;
    }

    private object ID;
    public string EmpID {
      get { return ID.ToString();  }
    }

    private string lastName;
    public string LastName {
      get { return lastName; }
      set { lastName = value; }
    }

    private string firstName;
    public string FirstName {
      get { return firstName; }
      set { firstName = value;  }
    }
    
    public string FullName {
      get { return FirstName  + " " +  LastName; }
    }
    
    private string address;
    public string Address {
      get { return address; }
      set { address = value;  }
    }    
  }
}

Comentários

Ao criar um ObjectDataSourceFilteringEventHandler delegado, você identifica o método que manipulará o evento. Para associar o evento ao manipulador de eventos, adicione uma instância do delegado ao evento. O manipulador de eventos é chamado sempre que o evento ocorre, a menos que você remova o representante. Para obter mais informações sobre como lidar com eventos, consulte Manipulando e gerando eventos.

Métodos de Extensão

GetMethodInfo(Delegate)

Obtém um objeto que representa o método representado pelo delegado especificado.

Aplica-se a

Produto Versões
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Confira também