0

これが私のGVです。

<asp:GridView ID="Grid1" runat="server" AutoGenerateColumns="false"
            AllowPaging="True" OnPageIndexChanging="Grid1_PageIndexChanging">
            <Columns>
                <asp:BoundField DataField="One" HeaderText="One" />
                <asp:BoundField DataField="Two" HeaderText="Two" />
                <asp:BoundField DataField="Three" HeaderText="Three" />
            </Columns>
</asp:GridView>

GV にストアド プロシージャを設定しています。

table = PublicClass.Sql_GetTable("usp_GetReportGridView", "NCIU");
Grid1.DataSource = table;
Grid1.DataBind();

列ヘッダーを使用して並べ替えるにはどうすればよいですか?

4

1 に答える 1

2

まず、AllowSortingプロパティをtrueにする必要があります。有効にすると、グリッドは各列のヘッダーにLinkBut​​tonコントロールをレンダリングします。ボタンがクリックされると、グリッドのSortCommandイベントがスローされます。コードでこのイベントを処理するのはあなた次第です。DataGridは常にデータソースで発生するのと同じ順序でデータを表示するため、一般的なロジックはデータソースを並べ替えてから、データをグリッドに再バインドします。以下のコードを参照してください。

//AllowSorting="True"
//OnSorting="GridView2_Sorting"
//SortExpression="name"

protected void GridView2_Sorting(object sender, GridViewSortEventArgs e)
{
  //to check whether to display in ascending order or descending order
  if (e.SortExpression.Trim() == this.SortField)
    this.SortDirection = (this.SortDirection == "D" ? "A" : "D");
  else
    this.SortDirection = "A";
  this.SortField = e.SortExpression;
  TempTable();
}
于 2012-11-16T03:59:22.993 に答える