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.
[Visual Basic] Public Overridable Property SortExpression As String [C#] public virtual string SortExpression {get; set;} [C++] public: __property virtual String* get_SortExpression(); public: __property virtual void set_SortExpression(String*); [JScript] public function get SortExpression() : String; public function set SortExpression(String);
Property Value
The name of the field to pass to the OnSortCommand method when a column is selected for sorting. The default value is String.Empty.
Remarks
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.
Note 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.
Note 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 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.
Example
[Visual Basic] <%@ Page Language="VB" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <html> <script runat="server"> Function CreateDataSource() As ICollection ' Create a Random object to mix up the order of items in the ' sample data. Dim Rand_Num As Random = New Random() ' Create sample data for the DataGrid control. Dim dt As DataTable = New DataTable() Dim dr As DataRow ' Define the columns of the table. dt.Columns.Add(new DataColumn("IntegerValue", GetType(Int32))) dt.Columns.Add(new DataColumn("StringValue", GetType(String))) dt.Columns.Add(new DataColumn("CurrencyValue", GetType(Double))) ' Populate the table with sample values. Dim i As Integer For i = 0 To 8 dr = dt.NewRow() dr(0) = i dr(1) = "Item " & Rand_Num.Next(1, 15).ToString() dr(2) = 1.23 * Rand_Num.Next(1, 15) dt.Rows.Add(dr) Next i ' To persist the data source between posts to the server, ' store it in session state. Session("Source") = dt Dim dv As DataView = New DataView(dt) Return dv End Function Sub Page_Load(sender As Object, e As EventArgs) ' Load sample data only once, when the page is first loaded. If Not IsPostBack Then ItemsGrid.DataSource = CreateDataSource() ItemsGrid.DataBind() End If End Sub Sub Sort_Grid(sender As Object, e As DataGridSortCommandEventArgs) ' Retrieve the data source from session state. Dim dt As DataTable = CType(Session("Source"), DataTable) ' Create a DataView from the DataTable. Dim dv As DataView = 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 ItemsGrid.DataBind() End Sub </script> <body> <form runat=server> <h3>DataGrid SortExpression Example</h3> <b>Product List</b> <asp:DataGrid id="ItemsGrid" BorderColor="black" BorderWidth="1" CellPadding="3" OnSortCommand="Sort_Grid" AutoGenerateColumns="False" AllowSorting="True" runat="server"> <HeaderStyle BackColor="#00aaaa"> </HeaderStyle> <Columns> <asp:BoundColumn DataField="IntegerValue" SortExpression="IntegerValue" HeaderText="Item"/> <asp:BoundColumn DataField="StringValue" SortExpression="StringValue" HeaderText="Description"/> <asp:BoundColumn DataField="CurrencyValue" HeaderText="Price" SortExpression="CurrencyValue" DataFormatString="{0:c}"> <ItemStyle HorizontalAlign="Right"> </ItemStyle> </asp:BoundColumn> </Columns> </asp:DataGrid> </form> </body> </html> [C#] <%@ Page Language="C#" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <html> <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); dt.Rows.Add(dr); } // 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(); ItemsGrid.DataBind(); } } 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; ItemsGrid.DataBind(); } </script> <body> <form runat=server> <h3>DataGrid SortExpression Example</h3> <b>Product List</b> <asp:DataGrid id="ItemsGrid" BorderColor="black" BorderWidth="1" CellPadding="3" OnSortCommand="Sort_Grid" AutoGenerateColumns="False" AllowSorting="True" runat="server"> <HeaderStyle BackColor="#00aaaa"> </HeaderStyle> <Columns> <asp:BoundColumn DataField="IntegerValue" SortExpression="IntegerValue" HeaderText="Item"/> <asp:BoundColumn DataField="StringValue" SortExpression="StringValue" HeaderText="Description"/> <asp:BoundColumn DataField="CurrencyValue" HeaderText="Price" SortExpression="CurrencyValue" DataFormatString="{0:c}"> <ItemStyle HorizontalAlign="Right"> </ItemStyle> </asp:BoundColumn> </Columns> </asp:DataGrid> </form> </body> </html>
[C++, JScript] No example is available for C++ or JScript. To view a Visual Basic or C# example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 2000, Windows XP Professional, Windows Server 2003 family
See Also
DataGridColumn Class | DataGridColumn Members | System.Web.UI.WebControls Namespace | DataGrid | OnSortCommand | String.Empty