This documentation is archived and is not being maintained.

DataGridColumn.SortExpression Property

Gets or sets the name of the field or expression to pass to the OnSortCommand method when a column is selected for sorting.

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

public virtual string SortExpression { get; set; }

Property Value

Type: System.String
The name of the field to pass to OnSortCommand when a column is selected for sorting. The default value is String.Empty.

Use the SortExpression property to specify or determine the name of the field to pass to the OnSortCommand method when a column is selected for sorting.


This property does not bind the column to a field in data source. To bind a column to a field, see the documentation for the specific column type.

When sorting is enabled, LinkButton controls are rendered in the heading section of each column where the SortExpression property is set.


When the AutoGenerateColumns property is set to true, the SortExpression property for each column in the DataGrid control that supports data binding is automatically set with the field name bound to the column. If the AutoGenerateColumns property is set to false, you need to manually set the SortExpression property with the field name bound to the column for each column that you want to enable sorting for.

These LinkButton controls allow you to sort the DataGrid control by the selected column. When a LinkButton control for a column is clicked, the SortCommand event is raised. The value of the SortExpression property for the selected column is passed to the OnSortCommand event handler as part of the DataGridSortCommandEventArgs object.

The following code example demonstrates how to use the SortExpression property to specify the field name to use for sorting.

<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<html xmlns="" >
   <script runat="server">

      ICollection CreateDataSource()

         // Create a Random object to mix up the order of items in the 
         // sample data.
         Random Rand_Num = new Random();

         // Create sample data for the DataGrid control.
         DataTable dt = new DataTable();
         DataRow dr;

         // Define the columns of the table.
         dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
         dt.Columns.Add(new DataColumn("StringValue", typeof(String)));
         dt.Columns.Add(new DataColumn("CurrencyValue", typeof(Double)));

         // Populate the table with sample values.
         for (int i=0; i<=8; i++) 

            dr = dt.NewRow();

            dr[0] = i;
            dr[1] = "Item " + Rand_Num.Next(1, 15).ToString();
            dr[2] = 1.23 * Rand_Num.Next(1, 15);



         // To persist the data source between posts to the server,
         // store it in session state.  
         Session["Source"] = dt;

         DataView dv = new DataView(dt);

         return dv;


      void Page_Load(Object sender, EventArgs e)

         // Load sample data only once, when the page is first loaded.
         if (!IsPostBack)

            ItemsGrid.DataSource = CreateDataSource();



      void Sort_Grid(Object sender, DataGridSortCommandEventArgs e)

         // Retrieve the data source from session state.
         DataTable dt = (DataTable)Session["Source"];

         // Create a DataView from the DataTable.
         DataView dv = new DataView(dt);

         // The DataView provides an easy way to sort. Simply set the
         // Sort property with the name of the field to sort by.
         dv.Sort = e.SortExpression;

         // Re-bind the data source and specify that it should be sorted
         // by the field specified in the SortExpression property.
         ItemsGrid.DataSource = dv;



<head runat="server">
    <title>DataGrid SortExpression Example</title>

   <form id="form1" runat="server">

      <h3>DataGrid SortExpression Example</h3>

      <b>Product List</b>

      <asp:DataGrid id="ItemsGrid"

         <HeaderStyle BackColor="#00aaaa">


            <asp:BoundColumn DataField="IntegerValue" 

            <asp:BoundColumn DataField="StringValue"

            <asp:BoundColumn DataField="CurrencyValue" 

               <ItemStyle HorizontalAlign="Right">






.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

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