Esta documentación está archivada y no tiene mantenimiento.

ObjectDataSourceView.FilterExpression (Propiedad)

Obtiene o establece una expresión de filtrado que se aplica cuando se llama al método del objeto comercial identificado por la propiedad SelectMethod.

Espacio de nombres: System.Web.UI.WebControls
Ensamblado: System.Web (en system.web.dll)

public string FilterExpression { get; set; }
/** @property */
public String get_FilterExpression ()

/** @property */
public void set_FilterExpression (String value)

public function get FilterExpression () : String

public function set FilterExpression (value : String)

No aplicable.

Valor de propiedad

Cadena que representa una expresión de filtrado aplicada cuando se recuperan datos mediante el método del objeto comercial identificado por la propiedad SelectMethod.

Tipo de excepciónCondición

NotSupportedException

La propiedad FilterExpression estaba establecida y el método Select no devuelve un objeto DataSet.

El control ObjectDataSource sólo admite el filtrado de datos cuando el método Select devuelve un objeto DataSet, DataView o DataTable.

La sintaxis utilizada para la propiedad FilterExpression es una expresión de estilo de cadena de formato. La sintaxis de la expresión de filtrado es la misma que admite la propiedad RowFilter ya que la expresión de filtrado se aplica a la propiedad RowFilter del objeto DataView que devuelve la ejecución del método Select. (Para obtener más información, vea Expression). Si se agregan parámetros a la colección FilterParameters, también se pueden incluir en la expresión marcadores de posición de cadena de formato, por ejemplo "{0}", para sustituirlos por otros valores de parámetro. Los marcadores de posición se reemplazan en función del índice del parámetro de la colección FilterParameters.

Se puede incluir parámetros en la propiedad FilterExpression. Si el tipo del parámetro es una cadena o carácter, escriba el parámetro entre comillas simples. Las comillas no son necesarias si el parámetro es un tipo numérico. La colección FilterParameters contiene los parámetros que se evalúan para los marcadores de posición de la propiedad FilterExpression.

El valor de la propiedad FilterExpression se almacena en estado de vista.

Nota de seguridadNota: de seguridad

Se recomienda validar todos los valores de parámetro de filtro que se reciben del cliente. El tiempo de ejecución no hace más que sustituir el valor del parámetro en la expresión del filtro y aplicarlo al objeto DataView devuelto por el método Select. Si utiliza la propiedad FilterExpression como medida de seguridad para limitar el número de elementos devueltos, debe validar los valores de parámetro antes de que se produzca el filtrado.

Esta sección contiene dos ejemplos de código. En el primer ejemplo de código se indica cómo mostrar datos filtrados utilizando un control ObjectDataSource para recuperar los datos de un objeto comercial de nivel medio y un control GridView para mostrar los resultados. En el segundo ejemplo de código, se proporciona un ejemplo de objeto comercial de nivel medio que se utiliza en el primer ejemplo de código.

En el siguiente ejemplo de código se indica cómo mostrar datos filtrados utilizando un control ObjectDataSource para recuperar los datos de un objeto comercial de nivel medio y un control GridView para mostrar los resultados. El control ObjectDataSource sólo puede filtrar datos cuando el método que recupera los datos los recupera como objeto DataSet. Por ello, la propiedad SelectMethod identifica un método de objeto comercial que recupera los datos como objeto DataSet.

El ejemplo de código está formado por un control TextBox, un control GridView, el control ObjectDataSource y un botón Enviar. De manera predeterminada, el control TextBox contiene el nombre de uno de los empleados de Northwind Traders. El control GridView muestra información sobre el empleado que se identifica mediante el nombre del control TextBox. Para recuperar los datos de otro empleado, en el control TextBox, escriba su nombre completo y, a continuación, haga clic en el botón Enviar.

La propiedad FilterExpression especifica una expresión que se utiliza para filtrar los datos recuperados por la propiedad SelectMethod. Utiliza marcadores de posición de parámetros que se reemplazan por los parámetros de la colección FilterParameters. En este ejemplo, el marcador de posición del parámetro va entre comillas (') porque el tipo del parámetro es del tipo de cadena que podría contener espacios. Si el tipo del parámetro es numérico o de fecha, no se necesitan comillas.

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

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.JSL" Assembly="Samples.AspNet.JSL" %>
<%@ Page language="VJ#" %>
<!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.get_Text() == "")
        {
            e.get_ParameterValues().Clear();
            e.get_ParameterValues().Add("FullName", "Nancy Davolio");
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ObjectDataSource - VJ# 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>

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetAllEmployeesAsDataSet"
          typename="Samples.AspNet.JSL.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>

En el siguiente ejemplo de código, se proporciona un ejemplo de objeto comercial de nivel medio que se utiliza en el ejemplo de código anterior. El ejemplo de código consta de dos clases básicas:

  • La clase EmployeeLogic, una clase que encapsula lógica empresarial.

  • La clase NorthwindEmployee, que es una clase modelo que contiene sólo la funcionalidad básica necesaria para cargar y conservar los datos del nivel de datos.

Para simplificar las cosas, la clase EmployeeLogic crea un conjunto estático de datos, en lugar de recuperar los datos de un nivel de datos. También resulta útil en este ejemplo, ya que el ejemplo depende de que el usuario proporcione el nombre completo de un empleado de Northwind Traders para mostrar el filtrado.

Para obtener un ejemplo completo, debe compilar y utilizar estas clases con los ejemplos de código de formularios de página de formularios Web Forms proporcionados.

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

package Samples.AspNet.JSL ; 
import System .* ;
import System.Collections .* ;
import System.Data .* ;
import 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;
    } //GetAllEmployees


    public static NorthwindEmployee GetEmployee(Object anID)
    {
        ArrayList data = (ArrayList)GetAllEmployees();
        int empID = Int32.Parse(String.valueOf(anID));

        return (NorthwindEmployee)data.get_Item(empID);
    } //GetEmployee


    // 
    // 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", int.class.ToType());
        dt.get_Columns().Add(dc);
        dc = new DataColumn("FullName", String.class.ToType());
        dt.get_Columns().Add(dc);
        dc = new DataColumn("Address", String.class.ToType());
        dt.get_Columns().Add(dc);

        // Add rows to the DataTable.
        DataRow row;

		IEnumerator iterator = employees.GetEnumerator();
        for (int iCtr = 0; iCtr < employees.get_Count(); iCtr++) {
			iterator.MoveNext();
            NorthwindEmployee ne = 
                (NorthwindEmployee)iterator.get_Current();

            row = dt.NewRow();
            row.set_Item("EmpID", ne.get_EmpID());
            row.set_Item("FullName", ne.get_FullName());
            row.set_Item("Address", ne.get_Address());
            dt.get_Rows().Add(row);
        }

        // Add the complete DataTable to the DataSet.
        ds.get_Tables().Add(dt);
        return ds;
    } //GetAllEmployeesAsDataSet
} //EmployeeLogic



public class NorthwindEmployee
{
    public NorthwindEmployee(int anID, String aFirstName, String aLastName, 
        String anAddress)
    {
        ID = new Integer(anID);
        firstName = aFirstName;
        lastName = aLastName;
        address = anAddress;
    } //NorthwindEmployee


    private Object ID;


    /** @property */
    public String get_EmpID()
    {
        return ID.toString();
    } //get_EmpID


    private String lastName;


    /** @property */
    public String get_LastName()
    {
        return lastName;
    } //get_LastName


    /** @property */
    public void set_LastName(String value)
    {
        lastName = value;
    } //set_LastName


    private String firstName;


    /** @property */
    public String get_FirstName()
    {
        return firstName;
    } //get_FirstName


    /** @property */
    public void set_FirstName(String value)
    {
        firstName = value;
    } //set_FirstName


    /** @property */
    public String get_FullName()
    {
        return firstName + " " + lastName;
    } //get_FullName


    private String address;


    /** @property */
    public String get_Address()
    {
        return address;
    } //get_Address


    /** @property */
    public void set_Address(String value)
    {
        address = value;
    } //set_Address
} //NorthwindEmployee

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0
Mostrar: