GridView.Sorting GridView.Sorting GridView.Sorting GridView.Sorting Event

Definition

Tritt ein, wenn auf den Link zum Sortieren einer Spalte geklickt wird, allerdings bevor das GridView-Steuerelement den Sortiervorgang behandelt.Occurs when the hyperlink to sort a column is clicked, but before the GridView control handles the sort operation.

public:
 event System::Web::UI::WebControls::GridViewSortEventHandler ^ Sorting;
public event System.Web.UI.WebControls.GridViewSortEventHandler Sorting;
member this.Sorting : System.Web.UI.WebControls.GridViewSortEventHandler 
Public Custom Event Sorting As GridViewSortEventHandler 

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie das Sorting -Ereignis verwendet wird, um die Sortier GridView Funktionalität auszuführen, wenn das DataTable -Steuerelement durch DataSource Festlegen der-Eigenschaft Programm gesteuert an ein-Objekt gebunden wird.The following example demonstrates how to use the Sorting event to perform the sorting functionality when the GridView control is bound to a DataTable object by setting the DataSource property programmatically.

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

  protected void TaskGridView_Sorting(object sender, GridViewSortEventArgs e)
  {

    //Retrieve the table from the session object.
    DataTable dt = Session["TaskTable"] as DataTable;

    if (dt != null)
    {

      //Sort the data.
      dt.DefaultView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);
      TaskGridView.DataSource = Session["TaskTable"];
      TaskGridView.DataBind();
    }

  }

  private string GetSortDirection(string column)
  {

    // By default, set the sort direction to ascending.
    string sortDirection = "ASC";

    // Retrieve the last column that was sorted.
    string sortExpression = ViewState["SortExpression"] as string;

    if (sortExpression != null)
    {
      // Check if the same column is being sorted.
      // Otherwise, the default value can be returned.
      if (sortExpression == column)
      {
        string lastDirection = ViewState["SortDirection"] as string;
        if ((lastDirection != null) && (lastDirection == "ASC"))
        {
          sortDirection = "DESC";
        }
      }
    }

    // Save new values in ViewState.
    ViewState["SortDirection"] = sortDirection;
    ViewState["SortExpression"] = column;

    return sortDirection;
  }
    
  protected void Page_Load(object sender, EventArgs e)
  {
          
    if (!Page.IsPostBack)
    {

      // Create a new table.
      DataTable taskTable = new DataTable("TaskList");

      // Create the columns.
      taskTable.Columns.Add("Id", typeof(int));
      taskTable.Columns.Add("Description", typeof(string));

      //Add data to the new table.
      for (int i = 0; i < 10; i++)
      {
        DataRow tableRow = taskTable.NewRow();
        tableRow["Id"] = i;
        tableRow["Description"] = "Task " + (10 - i).ToString();
        taskTable.Rows.Add(tableRow);
      }

      //Persist the table in the Session object.
      Session["TaskTable"] = taskTable;

      //Bind the GridView control to the data source.
      TaskGridView.DataSource = Session["TaskTable"];
      TaskGridView.DataBind();
      
    }

  }

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Sorting example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
      <asp:GridView ID="TaskGridView" runat="server" 
        AllowSorting="true" 
        OnSorting="TaskGridView_Sorting" >
      </asp:GridView>
    
    </div>
    </form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

  Protected Sub TaskGridView_Sorting(ByVal sender As Object, ByVal e As GridViewSortEventArgs)
    
    'Retrieve the table from the session object.
    Dim dt = TryCast(Session("TaskTable"), DataTable)
    
    If dt IsNot Nothing Then
        
      'Sort the data.
      dt.DefaultView.Sort = e.SortExpression & " " & GetSortDirection(e.SortExpression)
      TaskGridView.DataSource = Session("TaskTable")
      TaskGridView.DataBind()
      
    End If

  End Sub
 

  Private Function GetSortDirection(ByVal column As String) As String
    
    ' By default, set the sort direction to ascending.
    Dim sortDirection = "ASC"
    
    ' Retrieve the last column that was sorted.
    Dim sortExpression = TryCast(ViewState("SortExpression"), String)
    
    If sortExpression IsNot Nothing Then
      ' Check if the same column is being sorted.
      ' Otherwise, the default value can be returned.
      If sortExpression = column Then
        Dim lastDirection = TryCast(ViewState("SortDirection"), String)
        If lastDirection IsNot Nothing _
          AndAlso lastDirection = "ASC" Then
          
          sortDirection = "DESC"
          
        End If
      End If
    End If
    
    ' Save new values in ViewState.
    ViewState("SortDirection") = sortDirection
    ViewState("SortExpression") = column
    
    Return sortDirection

  End Function

  Protected Sub Page_Load()
    
    If Not Page.IsPostBack Then
        
      ' Create a new table.
      Dim taskTable As New DataTable("TaskList")
        
      ' Create the columns.
      taskTable.Columns.Add("Id", GetType(Integer))
      taskTable.Columns.Add("Description", GetType(String))
        
      'Add data to the new table.
      For i = 0 To 9
        Dim tableRow As DataRow = taskTable.NewRow()
        tableRow("Id") = i
        tableRow("Description") = "Task " & (10 - i)
        taskTable.Rows.Add(tableRow)
      Next i
        
      'Persist the table in the Session object.
      Session("TaskTable") = taskTable
        
      'Bind the GridView control to the data source.
      TaskGridView.DataSource = Session("TaskTable")
      TaskGridView.DataBind()
    End If
 
  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Sorting example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
      <asp:GridView ID="TaskGridView" runat="server" 
        AllowSorting="true" 
        OnSorting="TaskGridView_Sorting" >
      </asp:GridView>
    
    </div>
    </form>
</body>
</html>

Im folgenden Beispiel wird veranschaulicht, wie das Sorting -Ereignis verwendet wird, um einen Sortiervorgang abzubrechen.The following example demonstrates how to use the Sorting event to cancel a sorting operation.


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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  
  void CustomersGridView_Sorting(Object sender, GridViewSortEventArgs e)
  {
    // Cancel the sorting operation if the user attempts
    // to sort by address.
    if (e.SortExpression == "Address")
    {
      e.Cancel = true;
      Message.Text = "You cannot sort by address.";
      SortInformationLabel.Text = "";
    }
    else
    {
      Message.Text = "";
    }
  }

  void CustomersGridView_Sorted(Object sender, EventArgs e)
  {
    // Display the sort expression and sort direction.
    SortInformationLabel.Text = "Sorting by " +
      CustomersGridView.SortExpression.ToString() +
      " in " + CustomersGridView.SortDirection.ToString() +
      " order.";
  }
  
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>GridView Sorting Example</title>
</head>
<body>
    <form id="form1" runat="server">
        
      <h3>GridView Sorting Example</h3>

      <asp:label id="Message"
        forecolor="Red"
        runat="server"/>
        
      <br/>
        
      <asp:label id="SortInformationLabel"
        forecolor="Navy"
        runat="server"/>
                
      <br/>  

      <asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSource" 
        autogeneratecolumns="true"
        allowpaging="true"
        emptydatatext="No data available." 
        allowsorting="true"
        onsorting="CustomersGridView_Sorting"
        onsorted="CustomersGridView_Sorted"  
        runat="server">
                
      </asp:gridview>
            
      <!-- 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], [Address], [City], [PostalCode], [Country] From [Customers]"
        connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" 
        runat="server"/>
        
    </form>
  </body>
</html>


<%@ Page language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  
  Sub CustomersGridView_Sorting(sender As Object, e As GridViewSortEventArgs)
  
    ' Cancel the sorting operation if the user attempts
    ' to sort by address.
    If e.SortExpression = "Address" Then
    
      e.Cancel = True
      Message.Text = "You cannot sort by address."
      SortInformationLabel.Text = ""
    
    Else
    
      Message.Text = ""
      
    End If
    
  End Sub

  Sub CustomersGridView_Sorted(ByVal sender As Object, ByVal e As EventArgs)
 
    ' Display the sort expression and sort direction.
    SortInformationLabel.Text = "Sorting by " & _
      CustomersGridView.SortExpression.ToString() & _
      " in " & CustomersGridView.SortDirection.ToString() & _
      " order."
    
  End Sub
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>GridView Sorted and Sorting Example</title>
</head>
<body>
    <form id="form1" runat="server">
        
      <h3>GridView Sorted and Sorting Example</h3>

      <asp:label id="Message"
        forecolor="Red"
        runat="server"/>
        
      <br/>
        
      <asp:label id="SortInformationLabel"
        forecolor="Navy"
        runat="server"/>
                
      <br/>  

      <asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSource" 
        autogeneratecolumns="true"
        allowpaging="true"
        emptydatatext="No data available." 
        allowsorting="true"
        onsorting="CustomersGridView_Sorting"
        onsorted="CustomersGridView_Sorted"  
        runat="server">
                
      </asp:gridview>
            
      <!-- 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], [Address], [City], [PostalCode], [Country] From [Customers]"
        connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" 
        runat="server"/>
        
    </form>
  </body>
</html>

Hinweise

Das Sorting -Ereignis wird ausgelöst, wenn auf den Link zum Sortieren einer Spalte geklickt wird, GridView jedoch bevor das-Steuerelement den Sortiervorgang behandelt.The Sorting event is raised when the hyperlink to sort a column is clicked, but before the GridView control handles the sort operation. Dies ermöglicht es Ihnen, eine Ereignis Behandlungsmethode bereitzustellen, die eine benutzerdefinierte Routine (z. b. das Abbrechen des Sortier Vorgangs) ausführt, wenn dieses Ereignis eintritt.This enables you to provide an event-handling method that performs a custom routine, such as canceling the sorting operation, whenever this event occurs.

Ein GridViewSortEventArgs -Objekt wird an die Ereignis Behandlungsmethode, die es Ihnen ermöglicht, den Sortier Ausdruck für die Spalte zu bestimmen und anzugeben, dass der Auswahl Vorgang abgebrochen werden soll.A GridViewSortEventArgs object is passed to the event-handling method, which enables you to determine the sort expression for the column and to indicate that the selection operation should be canceled. Um den Auswahl Vorgang abzubrechen, legen Cancel Sie die- GridViewSortEventArgs Eigenschaft des true-Objekts auf fest.To cancel the selection operation, set the Cancel property of the GridViewSortEventArgs object to true.

Informationen zum programmgesteuerten Initiieren eines Sortier Vorgangs finden Sie unter der Sort -Methode.For information about how to programmatically initiate a sort operation, see the Sort method.

Weitere Informationen zum Behandeln von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.For more information about how to handle events, see Handling and Raising Events.

Gilt für:

Siehe auch