ObjectDataSource.FilterParameters Vlastnost

Definice

Získá kolekci parametrů, které jsou přidruženy k libovolným zástupným symbolům parametrů v řetězci FilterExpression .

[System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)]
public System.Web.UI.WebControls.ParameterCollection FilterParameters { get; }

Hodnota vlastnosti

A ParameterCollection , který obsahuje sadu parametrů přidružených k libovolným zástupným symbolům parametrů nalezeným FilterExpression ve vlastnosti.

Atributy

Výjimky

Nastavíte FilterExpression vlastnost a Select() metoda nevrací DataSet hodnotu nebo DataTable.

Příklady

Tato část obsahuje dva příklady kódu. První příklad kódu ukazuje, jak zobrazit filtrovaná data pomocí objektu ObjectDataSource k načtení dat z obchodního objektu střední vrstvy a GridView ovládacího prvku pro zobrazení výsledků. Druhý příklad kódu poskytuje příklad obchodního objektu střední vrstvy, který se používá v prvním příkladu kódu.

Následující příklad kódu ukazuje, jak zobrazit filtrovaná data pomocí ovládacího prvku ObjectDataSource pro načtení dat z obchodního objektu střední vrstvy a GridView ovládacího prvku pro zobrazení výsledků. Ovládací ObjectDataSource prvek může filtrovat data pouze v případě, že metoda, která načítá data, je načte DataSet jako objekt nebo DataTable . Z tohoto důvodu SelectMethod vlastnost identifikuje metodu obchodního objektu, která načítá data jako DataSet.

Příklad kódu se skládá z TextBox ovládacího prvku, GridView ovládacího prvku ObjectDataSource , ovládacího prvku a tlačítka Odeslat . Ve výchozím nastavení TextBox se do pole vyplní jméno jednoho ze zaměstnanců Northwind Traders. Zobrazí GridView informace o zaměstnanci, který je identifikován jménem v TextBox. Pokud chcete načíst data o jiném zaměstnanci, zadejte do TextBoxpole celé jméno zaměstnance a klikněte na tlačítko Odeslat .

Vlastnost FilterExpression určuje výraz, který se používá k filtrování dat načtených SelectMethod vlastností. Používá zástupné symboly parametrů, které jsou vyhodnoceny jako parametry obsažené v kolekci FilterParameters . V tomto příkladu je zástupný symbol parametru ohraničen jednoduchými uvozovkami, protože typ parametru je typ řetězce, který může obsahovat mezery. Pokud je typ parametru číselný nebo datový typ, ohraničující uvozovky nejsou povinné. Kolekce FilterParameters obsahuje jeden parametr, objekt, FormParameter který je vázán na TextBox ovládací prvek.

Důležité

Měli byste ověřit jakoukoli hodnotu parametru filtru, kterou obdržíte z klienta. Modul runtime jednoduše nahradí hodnotu parametru do výrazu filtru a použije ji na DataView objekt vrácený metodou Select . Pokud vlastnost používáte FilterExpression jako bezpečnostní opatření k omezení počtu vrácených položek, musíte před filtrováním ověřit hodnoty parametrů.

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

Následující příklad kódu obsahuje příklad obchodního objektu střední vrstvy, který používá předchozí příklad kódu. Příklad kódu se skládá ze dvou základních tříd:

  • Třída EmployeeLogic , což je třída, která zapouzdřuje obchodní logiku.

  • Třída NorthwindEmployee , což je třída modelu, která obsahuje pouze základní funkce potřebné k načtení a uchování dat z datové vrstvy.

Pro zjednodušení EmployeeLogic třída vytvoří statickou sadu dat, místo aby načítá data z datové vrstvy. V tomto příkladu je to také užitečné, protože ukázka spoléhá na to, že zadáte celé jméno zaměstnance Northwind Traders, abyste mohli předvést filtrování. Pro úplný funkční příklad je nutné zkompilovat a použít tyto třídy s příklady kódu webových formulářů, které jsou k dispozici.

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

Poznámky

Ovládací ObjectDataSource prvek podporuje filtrování dat pouze v případě, že Select metoda vrátí DataSet objekt nebo DataTable .

Syntaxe, která se používá pro objekt, FilterExpression je výraz ve formátu řetězcového stylu. Syntaxe výrazu filtru je stejná syntaxe, jakou přijímá Expression vlastnost. Pokud do FilterParameters kolekce přidáte parametry, můžete také zahrnout zástupné symboly řetězců formátu. Můžete například zahrnout "{0}" do výrazu, který nahradí hodnoty parametrů. Zástupné symboly se nahradí podle indexu parametru v kolekci FilterParameters .

Do vlastnosti můžete zahrnout parametry FilterExpression . Pokud je parametr typu řetězec nebo znak, uzavřete parametr do jednoduchých uvozovek. Uvozovky se nevyžadují, pokud je parametr číselného typu.

Vlastnost FilterParameters načte FilterParameters vlastnost, která je obsažena objektem ObjectDataSourceView , který je přidružen k ovládacímu ObjectDataSource prvku.

Platí pro

Produkt Verze
.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

Viz také