Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

ObjectDataSourceFilteringEventHandler délégué

 

Date de publication : novembre 2016

Représente la méthode qui gérera le Filtering événements du ObjectDataSource contrôle.

Espace de noms:   System.Web.UI.WebControls
Assembly:  System.Web (dans System.Web.dll)

public delegate void ObjectDataSourceFilteringEventHandler(
	object sender,
	ObjectDataSourceFilteringEventArgs e
)

Paramètres

sender
Type: System.Object

La source de l’événement, le ObjectDataSource.

e
Type: System.Web.UI.WebControls.ObjectDataSourceFilteringEventArgs

ObjectDataSourceFilteringEventArgs qui contient les données d'événement.

Lorsque vous créez un délégué ObjectDataSourceFilteringEventHandler, vous identifiez la méthode qui gérera l'événement. Pour associer l'événement au gestionnaire d'événements, ajoutez une instance du délégué à l'événement. Le gestionnaire d'événements est appelé chaque fois qu'un événement se produit, sauf si vous supprimez le délégué. Pour plus d’informations sur les délégués de gestionnaires d’événements, consultez la page NIB : consommation d’événements.

Cette section contient deux exemples de code. Le premier exemple de code montre comment afficher des données filtrées à l’aide un ObjectDataSource contrôler pour récupérer des données à partir d’un objet métier de couche intermédiaire, puis en utilisant un GridView contrôle pour afficher les résultats. Le deuxième exemple de code fournit un exemple d’un objet métier de couche intermédiaire qui est utilisé par le premier exemple de code.

L’exemple de code suivant montre comment afficher des données filtrées à l’aide un ObjectDataSource contrôler pour récupérer des données à partir d’un objet métier de couche intermédiaire, puis en utilisant un GridView contrôle pour afficher les résultats. Le ObjectDataSource contrôle peut filtrer des données uniquement lorsque la méthode qui Récupère les données le récupère comme un DataSet ou DataTable objet. Pour cette raison, le SelectMethod propriété identifie une méthode d’objet métier qui Récupère des données comme un DataSet ou DataTable objet.

L’exemple de code se compose d’un TextBox contrôle, un GridView (contrôle), le ObjectDataSource (contrôle) et un envoyer bouton. Par défaut, le TextBox contrôle soit rempli avec le nom de l’un des employés de Northwind Traders. Le GridView contrôle affiche des informations sur l’employé est identifié par un nom dans la TextBox. Pour récupérer des données pour un autre employé, dans le TextBox contrôler, tapez le nom complet de l’employé, puis cliquez sur le envoyer bouton.

Le FilterExpression propriété spécifie une expression qui est utilisée pour filtrer les données récupérées par la méthode spécifiée par la SelectMethod propriété. Elle utilise des espaces réservés de paramètre qui sont comparés aux paramètres qui sont contenus dans le FilterParameters collection. Dans cet exemple, l’espace réservé du paramètre est placé entre guillemets simples (') car le type du paramètre est un type string qui peut contenir des espaces. Si le type du paramètre est numérique ou date, les guillemets ne sont pas nécessaires. Le FilterParameters collection contient un paramètre, un FormParameter objet qui est lié à la TextBox contrôle.

Si aucun nom n’est spécifié dans le TextBox (contrôle), un nouveau paramètre est ajouté à la ParameterValues collection afin que la recherche soit réussie.

<%@ 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>

L’exemple de code suivant fournit un exemple d’un objet métier de couche intermédiaire qui utilise l’exemple de code précédent. L’exemple de code se compose de deux classes de base : EmployeeLogic et NorthwindEmployee. La EmployeeLogic classe encapsule la logique métier et la NorthwindEmployee classe est une classe de modèle qui contient uniquement les fonctionnalités de base qui sont requis pour charger et rendre persistantes des données de la couche données. Pour plus de simplicité, la EmployeeLogic classe crée un ensemble statique de données, plutôt que de récupérer les données d’une couche de données. Pour obtenir un exemple complet, vous devez compiler et utiliser ces classes avec les exemples de code Web Forms fournis.

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;  }
    }    

  }
}

.NET Framework
Disponible depuis 2.0
Retour au début
Afficher: