ObjectDataSourceFilteringEventHandler Delegált
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.
A vezérlő eseményét Filtering kezelő ObjectDataSource metódust jelöli.
public delegate void ObjectDataSourceFilteringEventHandler(System::Object ^ sender, ObjectDataSourceFilteringEventArgs ^ e);
public delegate void ObjectDataSourceFilteringEventHandler(object sender, ObjectDataSourceFilteringEventArgs e);
type ObjectDataSourceFilteringEventHandler = delegate of obj * ObjectDataSourceFilteringEventArgs -> unit
Public Delegate Sub ObjectDataSourceFilteringEventHandler(sender As Object, e As ObjectDataSourceFilteringEventArgs)
Paraméterek
- sender
- Object
Az esemény forrása, a ObjectDataSource.
Olyan ObjectDataSourceFilteringEventArgs , amely az eseményadatokat tartalmazza.
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 vezérlővel, amely adatokat kér le egy középső szintű üzleti objektumból, majd egy vezérlő használatával GridView jeleníti meg az eredményeket. A második példakód egy középszintű üzleti objektumot mutat be, amelyet az első kód példája 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, majd hogyan jelenítheti meg az eredményeket vezérlővel GridView . 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. Ezért a SelectMethod tulajdonság azonosít egy üzleti objektum metódust, amely adatokat kér le vagy DataSet objektumkéntDataTable.
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 TextBox vezérlő a Northwind Traders egyik alkalmazottjának nevével van feltöltve. A GridView vezérlő megjeleníti a név alapján azonosított alkalmazott adatait a TextBox. Egy másik alkalmazott adatainak lekéréséhez írja be a TextBox vezérlőbe az alkalmazott 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 megadott metódus á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őjel (') közé tartozik, mivel a paraméter típusa olyan sztringtípus, amely szóközöket tartalmazhat. Ha a paraméter típusa numerikus vagy dátum, akkor nincs szükség 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.
Ha nincs megadva név a TextBox vezérlőben, a rendszer új paramétert ad hozzá a ParameterValues gyűjteményhez, hogy a keresés sikeres legyen.
<%@ 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: EmployeeLogic és NorthwindEmployee. Az EmployeeLogic osztály magában foglalja az üzleti logikát, és az NorthwindEmployee osztály egy olyan modellosztály, amely csak az adatrétegből származó adatok betöltéséhez és megőrzéséhez szükséges alapvető funkciókat tartalmazza. 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. 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
Meghatalmazott létrehozásakor ObjectDataSourceFilteringEventHandler azonosítja az eseményt kezelő metódust. Az esemény eseménykezelőhöz való társításához adja hozzá a meghatalmazott egy példányát az eseményhez. Az eseménykezelőt mindig meghívja a rendszer, ha nem távolítja el a meghatalmazottat. Az események kezelésével kapcsolatos további információkért lásd: Események kezelése és emelése.
Bővítő metódusok
| Name | Description |
|---|---|
| GetMethodInfo(Delegate) |
Lekéri a megadott meghatalmazott által képviselt metódust képviselő objektumot. |