ObjectDataSourceView.FilterExpression プロパティ
アセンブリ: System.Web (system.web.dll 内)

Dim instance As ObjectDataSourceView Dim value As String value = instance.FilterExpression instance.FilterExpression = value
/** @property */ public String get_FilterExpression () /** @property */ public void set_FilterExpression (String value)
public function get FilterExpression () : String public function set FilterExpression (value : String)
SelectMethod プロパティで指定されたビジネス オブジェクト メソッドを使用してデータを取得するときに適用される、フィルタ処理式を表す文字列。


ObjectDataSource コントロールがデータのフィルタ処理をサポートするのは、Select メソッドが DataSet、DataView、DataTable の各オブジェクトを返す場合だけです。
FilterExpression プロパティに使用されている構文は、書式指定文字列スタイルの式です。フィルタ式は、Select メソッドの実行で返される DataView オブジェクトの RowFilter プロパティに適用されるため、フィルタ式の構文は、RowFilter プロパティで受け入れられる構文と同じです (詳細については、Expression のトピックを参照してください)。パラメータを FilterParameters コレクションに追加する場合、パラメータ値を置換する式に、"{0}" などの書式指定文字列プレースホルダを含めることもできます。このプレースホルダは、FilterParameters コレクション内のパラメータのインデックスに従って置き換えられます。
FilterExpression には、パラメータを使用できます。パラメータのデータ型が文字列型または文字型の場合、パラメータを単一引用符で囲みます。パラメータが数値型の場合、引用符は不要です。FilterParameters コレクションは、FilterExpression にあるプレースホルダに対して評価する対象のパラメータを格納します。
FilterExpression プロパティの値はビューステートに格納されます。
![]() |
---|
クライアントから受け取るフィルタ パラメータ値を検証することをお勧めします。ランタイムは、パラメータ値をフィルタ式に置き換えて、Select メソッドから返される DataView オブジェクトに適用するだけです。返される項目数を制限するセキュリティ手段として FilterExpression プロパティを使用している場合、フィルタ処理の実行前にパラメータ値を検証する必要があります。 |

このセクションには、2 つのコード例が含まれています。中間層のビジネス オブジェクトおよび GridView コントロールから、ObjectDataSource コントロールを使用してデータを取得し、フィルタ処理済みのデータを表示する方法を最初のコード例に示します。2 つ目のコード例では、1 つ目のコード例で使用されている中間層ビジネス オブジェクトの例を示します。
中間層のビジネス オブジェクトおよび GridView コントロールから、ObjectDataSource コントロールを使用してデータを取得し、フィルタ処理済みのデータを表示する方法を次のコード例に示します。ObjectDataSource コントロールがデータをフィルタ処理できるのは、データを取得するメソッドがデータを DataSet オブジェクトとして取得する場合だけです。このため、SelectMethod プロパティは、データを DataSet として取得するビジネス オブジェクト メソッドを識別します。
このコード例は、TextBox、GridView コントロール、ObjectDataSource コントロール、および [Submit] ボタンで構成されます。既定では、TextBox にはいずれかの Northwind Traders 従業員の名前が設定されます。GridView には、TextBox 内の名前で識別される従業員の情報が表示されます。他の従業員のデータを取得するには、TextBox に目的の従業員のフルネームを入力して [Submit] ボタンをクリックします。
FilterExpression プロパティは、SelectMethod プロパティによって取得されたデータにフィルタ処理をするための式を指定します。FilterParameters コレクションに含まれるパラメータに評価されるパラメータ プレースホルダを使用します。この例では、パラメータの型が文字列型 (スペースが含まれる場合がある) であるため、パラメータ プレースホルダは単一引用符で囲まれます。パラメータのデータ型が数値型または日付型の場合、引用符は不要です。
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" Assembly="Samples.AspNet.VB" %> <%@ Page language="vb" %> <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> <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>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %> <%@ Page language="c#" %> <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> <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#" %> <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> <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>
前のコード例で使用した中間層ビジネス オブジェクトの例を提供するコード例を次に示します。このコード例は、次の 2 つの基本クラスで構成されます。
説明を簡略化するために、EmployeeLogic クラスは、データ層からデータを取得する代わりに、静的なデータのセットを作成します。この例ではユーザーが指定した Northwind Traders の従業員のフル ネームを使用してフィルタ処理を実行するため、この例でも便利な方法です。
実際に動作させるためには、これらのクラスをコンパイルし、提供された Web フォームのページ コード例と組み合わせて使用する必要があります。
Imports System 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 'EmployeeLogic 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 'New 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 'NorthwindEmployee End Namespace
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 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- ObjectDataSourceView.FilterExpression プロパティのページへのリンク