DataGridColumn.SortExpression Proprietà

Definizione

Ottiene o imposta il nome del campo o l'espressione da passare al metodo OnSortCommand(DataGridSortCommandEventArgs) quando una colonna viene selezionata per l'ordinamento.

public:
 virtual property System::String ^ SortExpression { System::String ^ get(); void set(System::String ^ value); };
public virtual string SortExpression { get; set; }
member this.SortExpression : string with get, set
Public Overridable Property SortExpression As String

Valore della proprietà

Nome del campo da passare all'oggetto OnSortCommand(DataGridSortCommandEventArgs) quando una colonna viene selezionata per l'ordinamento. Il valore predefinito è Empty.

Esempio

Nell'esempio di codice seguente viene illustrato come usare la SortExpression proprietà per specificare il nome del campo da usare per l'ordinamento.


<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <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>
 
<head runat="server">
    <title>DataGrid SortExpression Example</title>
</head>
<body>
 
   <form id="form1" 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>

<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <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>
 
<head runat="server">
    <title>DataGrid SortExpression Example</title>
</head>
<body>
 
   <form id="form1" 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>

Commenti

Utilizzare la SortExpression proprietà per specificare o determinare il nome del campo da passare al metodo quando viene selezionata una colonna per l'ordinamento OnSortCommand .

Nota

Questa proprietà non associa la colonna a un campo nell'origine dati. Per associare una colonna a un campo, vedere la documentazione per il tipo di colonna specifico.

Quando l'ordinamento è abilitato, LinkButton i controlli vengono visualizzati nella sezione intestazione di ogni colonna in cui è impostata la SortExpression proprietà.

Nota

Quando la proprietà è impostata su true, la AutoGenerateColumnsSortExpression proprietà per ogni colonna del DataGrid controllo che supporta il data binding viene impostata automaticamente con il nome del campo associato alla colonna. Se la AutoGenerateColumns proprietà è impostata su false, è necessario impostare manualmente la SortExpression proprietà con il nome del campo associato alla colonna per ogni colonna che si vuole abilitare l'ordinamento per.

Questi LinkButton controlli consentono di ordinare il controllo in base alla DataGrid colonna selezionata. Quando viene fatto clic su un LinkButton controllo per una colonna, viene generato l'evento SortCommand . Il valore della proprietà per la SortExpression colonna selezionata viene passato al OnSortCommand gestore eventi come parte dell'oggetto DataGridSortCommandEventArgs .

Si applica a

Vedi anche