ObjectDataSource.FilterParameters Tulajdonság
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Lekéri a sztring bármely paraméterhelyőrzőjével társított paraméterek gyűjteményét FilterExpression .
public:
property System::Web::UI::WebControls::ParameterCollection ^ FilterParameters { System::Web::UI::WebControls::ParameterCollection ^ get(); };
[System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)]
public System.Web.UI.WebControls.ParameterCollection FilterParameters { get; }
[<System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)>]
member this.FilterParameters : System.Web.UI.WebControls.ParameterCollection
Public ReadOnly Property FilterParameters As ParameterCollection
Tulajdonság értéke
A ParameterCollection tulajdonságban található paraméterhelyőrzőkhöz társított paraméterek készletét FilterExpression tartalmazza.
- Attribútumok
Kivételek
Beállítja a tulajdonságot FilterExpression , és a Select() metódus nem ad vissza egy DataSet vagy DataTable.
Példák
Ez a szakasz két példakódot tartalmaz. Az első példakód bemutatja, hogyan jeleníthet meg szűrt adatokat egy ObjectDataSource objektum használatával, hogy adatokat kérjen le egy középső szintű üzleti objektumból, és hogyan GridView jelenítheti meg az eredményeket egy vezérlővel. A második példakód egy középszintű üzleti objektumra mutat be példát, amelyet az első kód példában használ.
Az alábbi példakód bemutatja, hogyan jeleníthet meg szűrt adatokat egy ObjectDataSource vezérlővel, amely adatokat kér le egy középső szintű üzleti objektumból, és hogyan GridView jelenítheti meg az eredményeket. A ObjectDataSource vezérlő csak akkor képes szűrni az adatokat, ha az adatokat lekérő metódus vagy DataSet objektumként DataTable kéri le az adatokat. Emiatt a SelectMethod tulajdonság azonosít egy üzleti objektummetódust, amely adatokat DataSetkér le.
A példakód egy vezérlőből, egy TextBox vezérlőből GridView , egy ObjectDataSource vezérlőből és egy Küldés gombból áll. Alapértelmezés szerint a rendszer a TextBox Northwind Traders egyik alkalmazottjának nevével tölti ki. A GridView rendszer megjeleníti a név alapján azonosított alkalmazott adatait.TextBox Egy másik alkalmazott adatainak lekéréséhez írja be az TextBoxalkalmazott teljes nevét, majd kattintson a Küldés gombra.
A FilterExpression tulajdonság egy kifejezést határoz meg, amely a tulajdonság által lekért adatok szűrésére SelectMethod szolgál. Paraméterhelyőrzőket használ, amelyeket a rendszer kiértékel a FilterParameters gyűjteményben található paraméterekre. Ebben a példában a paraméter helyőrzője egyetlen idézőjelekkel van határolt, mert a paraméter típusa olyan sztringtípus, amely szóközöket tartalmazhat. Ha a paraméter típusa numerikus vagy dátum típusú, akkor nincs szükség határoló idézőjelekre. A FilterParameters gyűjtemény egy paramétert tartalmaz, egy FormParameter objektumot, amely a TextBox vezérlőhöz van kötve.
Important
Ellenőrizze az ügyféltől kapott szűrőparaméter-értékeket. A futtatókörnyezet egyszerűen lecseréli a paraméter értékét a szűrőkifejezésre, és alkalmazza a DataView metódus által Select visszaadott objektumra. Ha a FilterExpression tulajdonságot biztonsági mértékként használja a visszaadott elemek számának korlátozásához, a szűrés előtt ellenőriznie kell a paraméterértékeket.
<%@ 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.VB" Assembly="Samples.AspNet.VB" %>
<%@ Page language="vb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub ObjectDataSource1_Filtering(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceFilteringEventArgs)
If Textbox1.Text = "" Then
e.ParameterValues.Clear()
e.ParameterValues.Add("FullName", "Nancy Davolio")
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>ObjectDataSource - VB 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.VB.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>
Az alábbi példakód egy olyan középszintű üzleti objektumot mutat be, amelyet az előző kód példája használ. A példakód két alaposztályból áll:
Az
EmployeeLogicosztály, amely egy olyan osztály, amely magában foglalja az üzleti logikát.Az
NorthwindEmployeeosztály, amely egy modellosztály, amely csak azokat az alapvető funkciókat tartalmazza, amelyek az adatrétegből való adatok betöltéséhez és megőrzéséhez szükségesek.
Az egyszerűség kedvéért az EmployeeLogic osztály statikus adatkészletet hoz létre az adatok lekérése helyett egy adatszintről. Ebben a példában azért is hasznos, mert a minta egy Northwind Traders-alkalmazott teljes nevét adja meg a szűrés bemutatásához. A teljes munka példához ezeket az osztályokat a webűrlapok kód példáival kell lefordítania és használnia.
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; }
}
}
}
Imports System.Collections
Imports System.Data
Imports System.Web.UI.WebControls
Namespace Samples.AspNet.VB
'
' 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 Shared Function GetAllEmployees() As ICollection
Dim data As 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
End Function 'GetAllEmployees
Public Shared Function GetEmployee(anID As Object) As NorthwindEmployee
Dim data As ArrayList = CType(GetAllEmployees(), ArrayList)
Dim empID As Integer = Int32.Parse(anID.ToString())
Return CType(data(empID),NorthwindEmployee)
End Function '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 Shared Function GetAllEmployeesAsDataSet() As DataSet
Dim employees As ICollection = GetAllEmployees()
Dim ds As New DataSet("Table")
' Create the schema of the DataTable.
Dim dt As New DataTable()
Dim dc As DataColumn
dc = New DataColumn("EmpID", GetType(Integer))
dt.Columns.Add(dc)
dc = New DataColumn("FullName", GetType(String))
dt.Columns.Add(dc)
dc = New DataColumn("Address", GetType(String))
dt.Columns.Add(dc)
' Add rows to the DataTable.
Dim row As DataRow
Dim ne As NorthwindEmployee
For Each ne In employees
row = dt.NewRow()
row("EmpID") = ne.EmpID
row("FullName") = ne.FullName
row("Address") = ne.Address
dt.Rows.Add(row)
Next
' Add the complete DataTable to the DataSet.
ds.Tables.Add(dt)
Return ds
End Function 'GetAllEmployeesAsDataSet
End Class
Public Class NorthwindEmployee
Public Sub New(anID As Integer, aFirstName As String, aLastName As String, anAddress As String)
ID = anID
Me.aFirstName = aFirstName
Me.aLastName = aLastName
Me.aAddress = anAddress
End Sub
Private ID As Object
Public ReadOnly Property EmpID() As String
Get
Return ID.ToString()
End Get
End Property
Private aLastName As String
Public Property LastName() As String
Get
Return aLastName
End Get
Set
aLastName = value
End Set
End Property
Private aFirstName As String
Public Property FirstName() As String
Get
Return aFirstName
End Get
Set
aFirstName = value
End Set
End Property
Public ReadOnly Property FullName() As String
Get
Return FirstName & " " & LastName
End Get
End Property
Private aAddress As String
Public Property Address() As String
Get
Return aAddress
End Get
Set
aAddress = value
End Set
End Property
End Class
End Namespace
Megjegyzések
A ObjectDataSource vezérlő csak akkor támogatja az adatok szűrését, ha a Select metódus visszaad egy vagy DataSet objektumotDataTable.
A kifejezéshez FilterExpression használt szintaxis egy formázott sztringstílusú kifejezés. A szűrőkifejezés szintaxisa ugyanaz a szintaxis, amelyet a Expression tulajdonság elfogad. Ha paramétereket ad hozzá a FilterParameters gyűjteményhez, a formátumsztring helyőrzőit is használhatja. Adja meg "{0}" például a kifejezést a paraméterértékek helyettesítéséhez. A helyőrzőket a rendszer a gyűjtemény paraméterének indexe szerint cseréli FilterParameters le.
Paramétereket is felvehet a FilterExpression tulajdonságba. Ha a paraméter sztring vagy karaktertípus, a paramétert egyetlen idézőjelbe kell foglalnia. Nem kötelező idézőjeleket megadni, ha a paraméter numerikus típus.
A FilterParameters tulajdonság lekéri a FilterParameters vezérlőelemhez társított objektum által ObjectDataSourceView tartalmazott tulajdonságot ObjectDataSource .