Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
FormField Property
Collapse the table of content
Expand the table of content

FormParameter.FormField Property

Gets or sets the name of the form variable that the parameter binds to.

Namespace:  System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)

public string FormField { get; set; }

Property Value

Type: System.String
A string that identifies the form variable to which the parameter binds.

The FormField identifies a name/value pair that is passed in the Form collection. While the FormField property identifies the name of the pair, the FormParameter binds to its corresponding value at run time. If the expected form variable string name/value pair is not passed to the ASP.NET Web page in the collection, the Evaluate method binds the parameter to the value of the DefaultValue property, if it is set. If the DefaultValue is not set, the Evaluate method fails to bind the parameter to a value.

The following code example demonstrates how to display filtered data using an ObjectDataSource control and a FormParameter to retrieve data from a middle-tier business object and a GridView control to display the results.

The code example consists of a TextBox, a GridView control, the ObjectDataSource control, and a submit button. By default, the TextBox is populated with the name of one of the Northwind Traders employees. The GridView displays information about the employee identified by the name in the TextBox. To retrieve data on another employee, enter the full name of the employee in the TextBox and click the button.

The FilterExpression property specifies an expression used to filter the data retrieved by the SelectMethod. This property uses parameter placeholders that are evaluated to the parameters contained in the FilterParameters collection. In this example, the parameter placeholder is a FormParameter bound to the value of the TextBox control.

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<script runat="server">

    protected void ObjectDataSource1_Filtering(object sender, ObjectDataSourceFilteringEventArgs e)
        if (Textbox1.Text == "")
            e.ParameterValues.Add("FullName", "Nancy Davolio");

<html xmlns="http://www.w3.org/1999/xhtml" >
    <title>ObjectDataSource - C# Example</title>
    <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:boundfield headertext="ID" datafield="EmpID" />
            <asp:boundfield headertext="Name" datafield="FullName" />
            <asp:boundfield headertext="Street Address" datafield="Address" />

        <!-- Security Note: The ObjectDataSource uses a FormParameter,
             Security Note: which does not perform validation of input from the client. -->

          filterexpression="FullName='{0}'" OnFiltering="ObjectDataSource1_Filtering">
              <asp:formparameter name="FullName" formfield="Textbox1" defaultvalue="Nancy Davolio" />

        <p><asp:button id="Button1" runat="server" text="Search" /></p>


The following code example shows the middle-tier business object that the previous code example uses. This example consists of two basic classes: The EmployeeLogic class encapsulates business logic, and the NorthwindEmployee class is a model class that contains only the basic functionality required to load and persist data from the data tier. For simplicity, the EmployeeLogic class creates a static set of data, rather than retrieving the data from a data tier. It is also helpful for this example, because the sample relies on the user to provide the full name of a Northwind Traders employee to demonstrate filtering. For a complete working example, you must compile and use these classes with the ASP.NET code examples provided.

Security noteSecurity Note

The FormParameter does not validate the value passed by the form element in any way; it uses the raw value. In most cases, you can validate the value of the FormParameter before it is used by a data source control by handling an event, such as the Selecting, Updating, Inserting, or Deleting event exposed by the data source control you are using. If the value of the parameter does not pass your validation tests, you can cancel the data operation by setting the Cancel property of the associated CancelEventArgs class to true.

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;
      // Add the complete DataTable to the DataSet.

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


.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0
© 2015 Microsoft