GridView.AllowSorting GridView.AllowSorting GridView.AllowSorting GridView.AllowSorting Property

定義

並べ替え機能が有効かどうかを示す値を取得または設定します。Gets or sets a value indicating whether the sorting feature is enabled.

public:
 virtual property bool AllowSorting { bool get(); void set(bool value); };
public virtual bool AllowSorting { get; set; }
member this.AllowSorting : bool with get, set
Public Overridable Property AllowSorting As Boolean

プロパティ値

並べ替え機能が有効な場合は true。それ以外の場合は falsetrue if the sorting feature is enabled; otherwise, false. 既定値は、false です。The default is false.

次の例では、プロパティをAllowSorting使用して、自動的にGridView生成された列が使用されている場合にコントロールの並べ替えを有効にする方法を示します。The following example demonstrates how to use the AllowSorting property to enable sorting in a GridView control when automatically generated columns are used.


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

<!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" >
  <head runat="server">
    <title>GridView AllowSorting Example</title>
</head>
<body>
    <form id="form1" runat="server">
        
      <h3>GridView AllowSorting Example</h3>

      <asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSource" 
        autogeneratecolumns="true"
        emptydatatext="No data available." 
        allowsorting="true" 
        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">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>GridView AllowSorting Example</title>
</head>
<body>
    <form id="form1" runat="server">
        
      <h3>GridView AllowSorting Example</h3>

      <asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSource" 
        autogeneratecolumns="true"
        emptydatatext="No data available." 
        allowsorting="true" 
        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>

次の例では、 AllowSortingプロパティを使用して、 ColumnsコレクションがGridView定義されている場合にコントロールの並べ替えを有効にする方法を示します。The following example demonstrates how to use the AllowSorting property to enable sorting in a GridView control when a Columns collection is defined. 並べ替えの方向を示すために、並べ替えられている列のヘッダーにも、イメージがプログラムによって追加されます。An image is also programmatically added to the header of the column being sorted to indicate the sort direction. このサンプルを動作させるには、独自のイメージを用意する必要があります。You must provide your own images for this sample to work.


<%@ 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_RowCreated(Object sender, GridViewRowEventArgs e)
  {
    
    // Use the RowType property to determine whether the 
    // row being created is the header row. 
    if (e.Row.RowType == DataControlRowType.Header)
    {
      // Call the GetSortColumnIndex helper method to determine
      // the index of the column being sorted.
      int sortColumnIndex = GetSortColumnIndex();
      
      if (sortColumnIndex != -1)
      {
        // Call the AddSortImage helper method to add
        // a sort direction image to the appropriate
        // column header. 
        AddSortImage(sortColumnIndex, e.Row);
      }
    }
  }

  // This is a helper method used to determine the index of the
  // column being sorted. If no column is being sorted, -1 is returned.
  int GetSortColumnIndex()
  {

    // Iterate through the Columns collection to determine the index
    // of the column being sorted.
    foreach (DataControlField field in CustomersGridView.Columns)
    {
      if (field.SortExpression == CustomersGridView.SortExpression)
      {
        return CustomersGridView.Columns.IndexOf(field);
      }
    }

    return -1;
  }

  // This is a helper method used to add a sort direction
  // image to the header of the column being sorted.
  void AddSortImage(int columnIndex, GridViewRow headerRow)
  {
    
    // Create the sorting image based on the sort direction.
    Image sortImage = new Image();
    if (CustomersGridView.SortDirection == SortDirection.Ascending)
    {
      sortImage.ImageUrl = "~/Images/Ascending.jpg";
      sortImage.AlternateText = "Ascending Order";
    }
    else
    {
      sortImage.ImageUrl = "~/Images/Descending.jpg";
      sortImage.AlternateText = "Descending Order";
    }

    // Add the image to the appropriate header cell.
    headerRow.Cells[columnIndex].Controls.Add(sortImage);
    
  }
    
</script>

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

      <asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSource" 
        autogeneratecolumns="false"
        emptydatatext="No data available." 
        allowsorting="true"
        onrowcreated="CustomersGridView_RowCreated"
        runat="server">
        
        <columns>
          <asp:boundfield datafield="CustomerID"
            headertext="Customer ID"
            headerstyle-wrap="false" 
            sortexpression="CustomerID"/>
          <asp:boundfield datafield="CompanyName"
            headertext="CompanyName"
            headerstyle-wrap="false"
            sortexpression="CompanyName"/>
          <asp:boundfield datafield="Address"
            headertext="Address"
            headerstyle-wrap="false"
            sortexpression="Address"/>
          <asp:boundfield datafield="City"
            headertext="City"
            headerstyle-wrap="false"
            sortexpression="City"/>
          <asp:boundfield datafield="PostalCode"
            headertext="Postal Code"
            headerstyle-wrap="false"
            sortexpression="PostalCode" />
          <asp:boundfield datafield="Country"
            headertext="Country"
            headerstyle-wrap="false"
            sortexpression="Country"/>         
        </columns>
                
      </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_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
    
    ' Use the RowType property to determine whether the 
    ' row being created is the header row. 
    If e.Row.RowType = DataControlRowType.Header Then
    
      ' Call the GetSortColumnIndex helper method to determine
      ' the index of the column being sorted.
      Dim sortColumnIndex As Integer = GetSortColumnIndex()
      
      If sortColumnIndex <> -1 Then
      
        ' Call the AddSortImage helper method to add
        ' a sort direction image to the appropriate
        ' column header. 
        AddSortImage(sortColumnIndex, e.Row)
    
      End If
      
    End If
    
  End Sub

  ' This is a helper method used to determine the index of the
  ' column being sorted. If no column is being sorted, -1 is returned.
  Function GetSortColumnIndex() As Integer

    ' Iterate through the Columns collection to determine the index
    ' of the column being sorted.
    Dim field As DataControlField
    For Each field In CustomersGridView.Columns
    
      If field.SortExpression = CustomersGridView.SortExpression Then
      
        Return CustomersGridView.Columns.IndexOf(field)

      End If
      
    Next

    Return -1
      
  End Function

  ' This is a helper method used to add a sort direction
  ' image to the header of the column being sorted.
  Sub AddSortImage(ByVal columnIndex As Integer, ByVal row As GridViewRow)

    ' Create the sorting image based on the sort direction.
    Dim sortImage As New Image()
    If CustomersGridView.SortDirection = SortDirection.Ascending Then
    
      sortImage.ImageUrl = "~/Images/Ascending.jpg"
      sortImage.AlternateText = "Ascending Order"
    
    Else
    
      sortImage.ImageUrl = "~/Images/Descending.jpg"
      sortImage.AlternateText = "Descending Order"
    
    End If
    ' Add the image to the appropriate header cell.
    row.Cells(columnIndex).Controls.Add(sortImage)
    
  End Sub
    
</script>

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

      <asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSource" 
        autogeneratecolumns="false"
        emptydatatext="No data available." 
        allowsorting="true"
        onrowcreated="CustomersGridView_RowCreated"
        runat="server">
        
        <columns>
          <asp:boundfield datafield="CustomerID"
            headertext="Customer ID"
            headerstyle-wrap="false" 
            sortexpression="CustomerID"/>
          <asp:boundfield datafield="CompanyName"
            headertext="CompanyName"
            headerstyle-wrap="false"
            sortexpression="CompanyName"/>
          <asp:boundfield datafield="Address"
            headertext="Address"
            headerstyle-wrap="false"
            sortexpression="Address"/>
          <asp:boundfield datafield="City"
            headertext="City"
            headerstyle-wrap="false"
            sortexpression="City"/>
          <asp:boundfield datafield="PostalCode"
            headertext="Postal Code"
            headerstyle-wrap="false"
            sortexpression="PostalCode" />
          <asp:boundfield datafield="Country"
            headertext="Country"
            headerstyle-wrap="false"
            sortexpression="Country"/>         
        </columns>
                
      </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>

注釈

並べ替えをサポートするデータソースコントロールがGridViewコントロールにバインドされている場合、コントロールはGridViewデータソースコントロールの機能を利用し、自動並べ替え機能を提供できます。When a data source control that supports sorting is bound to the GridView control, the GridView control can take advantage of the data source control's capabilities and provide automatic sorting functionality. プログラムによってDataSourceプロパティを設定してSorting コントロールをデータソースにバインドする場合は、イベントを使用して並べ替え機能を提供する必要があります。GridViewWhen the GridView control is bound to a data source by setting the DataSource property programmatically, you must provide the sorting functionality by using the Sorting event.

注意

データソースによって、並べ替え機能を有効にするための要件が異なります。Different data sources have different requirements for enabling their sorting capabilities. 要件を確認するには、特定のデータソースのドキュメントを参照してください。To determine the requirements, see the documentation for the specific data source.

並べ替えを有効にするにAllowSortingは、 trueプロパティをに設定します。To enable sorting, set the AllowSorting property to true. 並べ替えを有効にすると、 SortExpressionプロパティが設定されている各列フィールドの見出しテキストがリンクボタンとして表示されます。When sorting is enabled, the heading text for each column field with its SortExpression property set is displayed as a link button.

注意

自動的に生成された列フィールドのプロパティが自動的に設定されます。SortExpressionThe SortExpression property for an automatically generated columns field is automatically populated. Columnsコレクションを使用して独自の列を定義する場合は、 SortExpression各列に対してプロパティを設定する必要があります。そうしないと、列のヘッダーに [リンク] ボタンが表示されません。If you define your own columns through the Columns collection, you must set the SortExpression property for each column; otherwise, the column will not display the link button in the header.

列の [リンク] ボタンをクリックすると、 GridViewコントロール内の項目が並べ替え式に基づいて並べ替えられます。Clicking the link button for a column causes the items in the GridView control to be sorted based on the sort expression. 通常、並べ替え式は、列に表示されるフィールドの名前です。これにより、 GridViewコントロールはその列を基準にして並べ替えられます。Typically, the sort expression is simply the name of the field displayed in the column, which causes the GridView control to sort with respect to that column. 複数のフィールドで並べ替えるには、フィールド名のコンマ区切りリストを含む並べ替え式を使用します。To sort by multiple fields, use a sort expression that contains a comma-separated list of field names. プロパティを使用して、 GridViewコントロールが適用されている並べ替え式を特定できます。 SortExpressionYou can determine the sort expression that the GridView control is applying by using the SortExpression property. 列の [リンク] ボタンをクリックすると、並べ替えの方向が昇順と降順の間で切り替わります。Clicking a column's link button repeatedly toggles the sort direction between ascending and descending order. 現在の並べ替え方向を確認するにはSortDirection 、プロパティを使用します。To determine the current sort direction, use the SortDirection property.

コントロールGridViewには、並べ替えが発生したときにカスタムアクションを実行するために使用できるいくつかのイベントが用意されています。The GridView control provides several events that you can use to perform a custom action when sorting occurs. 次の表に、使用可能なイベントを示します。The following table lists the available events.

eventEvent 説明Description
Sorted 列を並べ替えるハイパーリンクがクリックされた場合に、GridView コントロールが並べ替え操作を処理した後に発生します。Occurs when the hyperlink to sort a column is clicked, but after the GridView control handles the sort operation. このイベントは、ユーザーがハイパーリンクをクリックして列を並べ替えると、通常、タスクを実行するために使用されます。This event is commonly used to perform a task after the user clicks a hyperlink to sort a column.
Sorting 列を並べ替えるハイパーリンクがクリックされた場合に、GridView コントロールが並べ替え操作を処理する前に発生します。Occurs when the hyperlink to sort a column is clicked, but before the GridView control handles the sort operation. このイベントは、並べ替え操作をキャンセルしたり、カスタムの並べ替えルーチンを実行したりするためによく使用されます。This event is often used to cancel the sorting operation or to perform a custom sorting routine.

適用対象

こちらもご覧ください