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;

获取GridViewfrom的 DataSource,session因为它是在上一个请求中存储在那里的。请注意,所有对象都在每个页面的生命周期结束时被释放,因此您需要将其保存在某个地方(会话、视图状态)或从您的 rdbms 再次加载它(推荐)。

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

以下行是多余的,可以删除

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

我假设旧方向存储在 ViewState/Session 中,并且该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 回答