DataControlRowType Enumeration

Note: This enumeration is new in the .NET Framework version 2.0.

Specifies the function of a row in a data control, such as DetailsView or GridView.

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

public enum DataControlRowType
public enum DataControlRowType
public enum DataControlRowType

 Member nameDescription
DataRowA data row of a data control. Only DataRow rows can be data-bound. 
EmptyDataRowA row that displays page buttons or a pager control. Pager rows cannot be data-bound. 
FooterA footer row of a data control. Footer rows cannot be data-bound. 
HeaderA header row of a data control. Header rows cannot be data-bound. 
PagerA row that displays page buttons or a pager control. Pager rows cannot be data-bound. 
SeparatorA row separator. Row separators cannot be data-bound. 

The DataControlRowType enumeration identifies the function of rows in a data control. It is used by the DetailsView and GridView controls to distinguish between rows that display data and rows that display other user interface (UI) elements, such as a header row, row separator, or the pager buttons of the control.

You can use the DataControlRowType enumeration to identify the type of a GridViewRow or DetailsViewRow object when enumerating through a GridViewRowCollection or DetailsViewRowCollection collection, respectively. If you are writing a data control that uses rows, you can use the DataControlRowType enumeration to identify the function of different rows in the control.

The following code example demonstrates how to use the DataControlRowType enumeration to check the type of a row when working with a GridView control. The AuthorsGridView_RowCreated method ensures that the CommandArgument property of a LinkButton control is unique for all the data rows in the GridView control, so that when a row's LinkButton control is clicked, it can be identified correctly.

<%@ Page language="C#" %>

<script runat="server">

  void Page_Load(Object sender, EventArgs e)

    // Create a new GridView object.
    GridView customersGridView = new GridView();

    // Set the GridView object's properties.
    customersGridView.ID = "CustomersGridView";
    customersGridView.DataSourceID = "CustomersSource";
    customersGridView.AutoGenerateColumns = false;

    // Dynamically create the columns for the GridView control.
    ButtonField addColumn = new ButtonField();
    addColumn.CommandName = "Add";
    addColumn.Text = "Add";
    addColumn.ButtonType = ButtonType.Link;

    BoundField companyNameColumn = new BoundField();
    companyNameColumn.DataField = "CompanyName";
    companyNameColumn.HeaderText = "Company Name";

    BoundField cityColumn = new BoundField();
    cityColumn.DataField = "City";
    cityColumn.HeaderText = "City";

    // Add the columns to the Columns collection
    // of the GridView control.

    // Programmatically register the event handling methods.
    customersGridView.RowCommand += new GridViewCommandEventHandler(this.CustomersGridView_RowCommand);
    customersGridView.RowCreated += new GridViewRowEventHandler(this.CustomersGridView_RowCreated);

    // Add the GridView object to the Controls collection
    // of the PlaceHolder control.


  void CustomersGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
    // If multiple ButtonField columns are used, use the
    // CommandName property to determine which button was clicked.
      // Convert the row index stored in the CommandArgument
      // property to an Integer.
      int index = Convert.ToInt32(e.CommandArgument);

      // Retrieve the row that contains the button clicked
      // by the user from the Rows collection. Use the
      // CommandSource property to access the GridView control.
      GridView customersGridView = (GridView)e.CommandSource;
      GridViewRow row = customersGridView.Rows[index];

      // Create a new ListItem object for the customer in the row.
      ListItem item = new ListItem();
      item.Text = Server.HtmlDecode(row.Cells[1].Text) + " " + Server.HtmlDecode(row.Cells[2].Text);

      // If the author is not already in the ListBox, add the ListItem
      // object to the Items collection of a ListBox control.

  void CustomersGridView_RowCreated(Object sender, GridViewRowEventArgs e)

    // The GridViewCommandEventArgs class does not contain a
    // property that indicates which row's command button was
    // clicked. To identify which row was clicked, use the button's
    // CommandArgument property by setting it to the row's index.
    if(e.Row.RowType == DataControlRowType.DataRow)
      // Retrieve the LinkButton control from the first column.
      LinkButton addButton = (LinkButton)e.Row.Cells[0].Controls[0];

      // Set the LinkButton's CommandArgument property with the
      // row's index.
      addButton.CommandArgument = e.Row.RowIndex.ToString();



    <form runat="server">

      <h3>GridViewCommandEventArgs Example</h3>

      <table width="100%">
          <td width="50%">
            <asp:placeholder id="GridViewPlaceHolder"

          <td valign="top" width="50%">
             Customers: <br/>
             <asp:listbox id="CustomersListBox"

      <!-- This example uses Microsoft SQL Server and connects  -->
      <!-- to the Northwind sample database. Use an ASP.NET     -->
      <!-- expression to retrieve the connection string value   -->
      <!-- from the Web.config file.                            -->
      <asp:sqldatasource id="CustomersSource"
        selectcommand="Select [CustomerID], [CompanyName], [City] From [Customers]"
        connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" 


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

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0

Community Additions