0

私は .NET を初めて使用するので、次のコードの説明が必要です。誰か説明してくれませんか?

protected void GridView1_Sort(object sender, GridViewSortEventArgs e)
{
    GridView grid = sender as GridView;

    DataTable dt = Session["List"] as DataTable;
    string month = System.DateTime.Now.AddMonths(-3).ToString("MMMM");
    if (dt != null)
    {
        dt.DefaultView.Sort = e.SortExpression + " " +     GetSortDirection(e.SortExpression);
        grid.DataSource = Session["List"];
        grid.DataBind();
    }
}
4

1 に答える 1

2

これは通常「私のコードを説明する」サイトではありませんが...

GridSortメソッド:指定された並べ替え式と方向に基づいてGridViewコントロールを並べ替えます。

protected void GridView1_Sort(object sender, GridViewSortEventArgs e)
{

送信者をGridViewにキャストします。送信者は常にイベントを発生させたコントロールです。

GridView grid = sender as GridView;

以前のリクエストでそこに保存されていたGridViewからのデータソースを取得します。sessionすべてのオブジェクトはすべてのページのライフサイクルの終わりに破棄されるため、どこかに永続化するか(Session、ViewState)、rdbmsから再度ロードする必要があることに注意してください(推奨)。

DataTable dt = Session["List"] as DataTable;

次の行は冗長であり、削除できます

string month = System.DateTime.Now.AddMonths(-3).ToString("MMMM");

古い方向がViewState/Sessionに格納されており、メソッドがsort-directionを逆にしていると仮定しGetSortDirectionます(以前にその列でASCにソートされていた場合はDESCなど)。

string month = System.DateTime.Now.AddMonths(-3).ToString("MMMM");
if (dt != null)
{
    dt.DefaultView.Sort = e.SortExpression + " " +     GetSortDirection(e.SortExpression); // i assume that the old direction

再度Sessionに保存し、をデータバインドしGridViewます。

        grid.DataSource = Session["List"];
        grid.DataBind();
    }
}
于 2012-10-11T22:10:54.927 に答える