DataGrid.AllowSorting プロパティ
アセンブリ: System.Web (system.web.dll 内)

Dim instance As DataGrid Dim value As Boolean value = instance.AllowSorting instance.AllowSorting = value
/** @property */ public boolean get_AllowSorting () /** @property */ public void set_AllowSorting (boolean value)
並べ替えが有効な場合は true。それ以外の場合は false。既定値は false です。

並べ替えが有効である場合、LinkButton コントロールは、SortExpression プロパティが設定されているそれぞれの列の見出しセクションに表示されます。これらの LinkButton コントロールにより、選択した列ごとに DataGrid コントロールを並べ替えることができます。唯一の例外は、TemplateColumn 列型で HeaderTemplate プロパティが設定されている場合です。この場合は、列の HeaderTemplate に Button コントロールを作成する必要があります。
SortCommand イベントは、LinkButton コントロールの 1 つがクリックされたときに発生します。イベント ハンドラのコードを作成するかどうかはユーザーの任意です。ハンドラの典型的なロジックは、一覧を並べ替えてデータを DataGrid コントロールに再連結します。

AllowSorting プロパティを使用して、並べ替えを有効にする方法を次の例に示します。
<%@ Page Language="VB" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <html> <script language="VB" runat="server"> Dim SortExpression As String Function CreateDataSource() As ICollection Dim dt As New DataTable() Dim dr As DataRow Dim Rand_Num As New Random() dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32))) dt.Columns.Add(New DataColumn("StringValue", GetType(String))) dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double))) Dim i As Integer For i = 0 To 14 dr = dt.NewRow() dr(0) = i dr(1) = "Item " & i.ToString() dr(2) = 1.23 * Rand_Num.Next(1, 15) dt.Rows.Add(dr) Next i Dim dv As New DataView(dt) dv.Sort = SortExpression Return dv End Function 'CreateDataSource Sub Page_Load(sender As Object, e As EventArgs) If Not IsPostBack Then If SortExpression = "" Then SortExpression = "IntegerValue" End If ItemsGrid.DataSource = CreateDataSource() ItemsGrid.DataBind() End If End Sub 'Page_Load Sub Sort_Grid(sender As Object, e As DataGridSortCommandEventArgs) SortExpression = e.SortExpression.ToString() ItemsGrid.DataSource = CreateDataSource() ItemsGrid.DataBind() End Sub 'Sort_Grid </script> <body> <form runat=server> <h3>DataGrid Sorting Example</h3> <asp:DataGrid id="ItemsGrid" runat="server" BorderColor="black" BorderWidth="1" CellPadding="3" AllowSorting="true" OnSortCommand="Sort_Grid" HeaderStyle-BackColor="#00aaaa" AutoGenerateColumns="true"/> </form> </body> </html>
<%@ Page Language="C#" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <html> <script language="C#" runat="server"> string SortExpression; ICollection CreateDataSource() { DataTable dt = new DataTable(); DataRow dr; Random Rand_Num = new Random(); dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32))); dt.Columns.Add(new DataColumn("StringValue", typeof(string))); dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double))); for (int i = 0; i < 15; i++) { dr = dt.NewRow(); dr[0] = i; dr[1] = "Item " + i.ToString(); dr[2] = 1.23 * Rand_Num.Next(1, 15); dt.Rows.Add(dr); } DataView dv = new DataView(dt); dv.Sort=SortExpression; return dv; } void Page_Load(Object sender, EventArgs e) { if (!IsPostBack) { if (SortExpression == "") SortExpression = "IntegerValue"; ItemsGrid.DataSource = CreateDataSource(); ItemsGrid.DataBind(); } } void Sort_Grid(Object sender, DataGridSortCommandEventArgs e) { SortExpression = e.SortExpression.ToString(); ItemsGrid.DataSource = CreateDataSource(); ItemsGrid.DataBind(); } </script> <body> <form runat=server> <h3>DataGrid Sorting Example</h3> <asp:DataGrid id="ItemsGrid" runat="server" BorderColor="black" BorderWidth="1" CellPadding="3" AllowSorting="true" OnSortCommand="Sort_Grid" HeaderStyle-BackColor="#00aaaa" AutoGenerateColumns="true"/> </form> </body> </html>
<%@ Page Language="JScript" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <html> <script language="JScript" runat="server"> var SortExpression : String; function CreateDataSource () : ICollection { var dt : DataTable = new DataTable(); var dr : DataRow; var Rand_Num : Random = new Random(); dt.Columns.Add(new DataColumn("IntegerValue", Int32)); dt.Columns.Add(new DataColumn("StringValue", System.String)); dt.Columns.Add(new DataColumn("CurrencyValue", double)); for (var i : int = 0; i < 15; i++) { dr = dt.NewRow(); dr[0] = i; dr[1] = "Item " + i.ToString(); dr[2] = 1.23 * Rand_Num.Next(1, 15); dt.Rows.Add(dr); } var dv : DataView = new DataView(dt); dv.Sort=SortExpression; return dv; } function Page_Load(sender, e : EventArgs) { if (!IsPostBack) { if (SortExpression == "") SortExpression = "IntegerValue"; ItemsGrid.DataSource = CreateDataSource(); ItemsGrid.DataBind(); } } function Sort_Grid(sender, e : DataGridSortCommandEventArgs) { SortExpression = e.SortExpression.ToString(); ItemsGrid.DataSource = CreateDataSource(); ItemsGrid.DataBind(); } </script> <body> <form runat=server> <h3>DataGrid Sorting Example</h3> <asp:DataGrid id="ItemsGrid" runat="server" BorderColor="black" BorderWidth="1" CellPadding="3" AllowSorting="true" OnSortCommand="Sort_Grid" HeaderStyle-BackColor="#00aaaa" AutoGenerateColumns="true"/> </form> </body> </html>
<%@ 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 ' Rebind 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 Sub Check_Change(sender As Object, e As EventArgs) ' Allow or prevent sorting depending on the user's selection. If AllowSortingCheckBox.Checked Then ItemsGrid.AllowSorting = True Else ItemsGrid.AllowSorting = False End If ' After changing the property, rebind the data to ' refresh the DataGrid control. ' 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) ' Rebind the data source. ItemsGrid.DataSource = dv ItemsGrid.DataBind() End Sub </script> <body> <form runat=server> <h3>DataGrid AllowSorting Example</h3> Select whether to allow sorting in the DataGrid control. <br><br> <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> <hr> <asp:CheckBox id="AllowSortingCheckBox" Text="Allow sorting" AutoPostBack="True" Checked="True" OnCheckedChanged="Check_Change" runat="server"/> </form> </body> </html>
<%@ 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; // Rebind the data source and specify that it should be sorted // by the field specified in the SortExpression property. ItemsGrid.DataSource = dv; ItemsGrid.DataBind(); } void Check_Change(Object sender, EventArgs e) { // Allow or prevent sorting depending on the user's selection. if (AllowSortingCheckBox.Checked) { ItemsGrid.AllowSorting = true; } else { ItemsGrid.AllowSorting = false; } // After changing the property, rebind the data to // refresh the DataGrid control. // Retrieve the data source from session state. DataTable dt = (DataTable)Session["Source"]; // Create a DataView from the DataTable. DataView dv = new DataView(dt); // Rebind the data source. ItemsGrid.DataSource = dv; ItemsGrid.DataBind(); } </script> <body> <form runat=server> <h3>DataGrid AllowSorting Example</h3> Select whether to allow sorting in the DataGrid control. <br><br> <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> <hr> <asp:CheckBox id="AllowSortingCheckBox" Text="Allow sorting" AutoPostBack="True" Checked="True" OnCheckedChanged="Check_Change" runat="server"/> </form> </body> </html>

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DataGrid.AllowSorting プロパティ
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

Dim instance As DataGrid Dim value As Boolean value = instance.AllowSorting instance.AllowSorting = value
/** @property */ public boolean get_AllowSorting () /** @property */ public void set_AllowSorting (boolean value)
列を並べ替えることができる場合は true。それ以外の場合は false。

現在、コントロールに対して有効にされている DataGridTableStyle が存在する場合、このプロパティは、DataGridTableStyle.AllowSorting プロパティによってオーバーライドされます。
並べ替えができる場合は、列ヘッダーをクリックすると、その列を基準としてテーブル データを並べ替えることができます。
DataColumn の式を使用して並べ替えることもできます。並べ替えの式を作成する方法の詳細については、Expression のトピックを参照してください。
System.Windows.Forms.DataGrid が DataView にバインドされている場合は、DataView クラスの Sort プロパティを使用して、テーブルにカスタムの並べ替えを設定できます。同様に、System.Windows.Forms.DataGrid が DataViewManager にバインドされている場合は、DataViewSettings クラスの Sort プロパティを設定して、DataViewManager の各テーブルにカスタムの並べ替えを設定できます。

AllowSorting プロパティを切り替えるコード例を次に示します。
Private Sub ToggleAllowSorting() ' Toggle the AllowSorting property. DataGrid1.AllowSorting = Not DataGrid1.AllowSorting End Sub
private void ToggleAllowSorting() { // Toggle the AllowSorting property. dataGrid1.AllowSorting = ! dataGrid1.AllowSorting; }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DataGrid クラス
DataGrid メンバ
System.Windows.Forms 名前空間
Expression
DataView.Sort
DataViewSetting.Sort
DataGridTableStyle
DataGridTableStyle.AllowSorting
- DataGrid.AllowSortingのページへのリンク