首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序只发生一次

排序只发生一次
EN

Stack Overflow用户
提问于 2012-09-27 19:48:43
回答 1查看 217关注 0票数 0

在我的网格视图中有4列。当我单击任何列时,只对该列进行一次排序。我哪里错了?

下面是我的代码:

代码语言:javascript
复制
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
Bind();
} 

}

public void bind()
{
String connectionString = WebConfigurationManager.ConnectionStrings["ABConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(connectionString); 
con.Open();
DataSet ds = new DataSet();

SqlDataAdapter da = new SqlDataAdapter("select * from Table1",con);
try
{
da.Fill(ds, "Table1");

GridView1.DataSource = ds.Tables["Table1"];
Session["dttable"] = ds.Tables["Table1"];
GridView1.DataBind();
}
catch (Exception ex)
{

ex.ToString();

}


protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{

string sortExpression = e.SortExpression;
string direction = string.Empty;
SortDirection GridViewSortDirection = e.SortDirection;
if (GridViewSortDirection == SortDirection.Ascending)
{

GridViewSortDirection = SortDirection.Descending;
direction = " DESC";

}

else
{
GridViewSortDirection = SortDirection.Ascending;

direction = " ASC";

}
DataTable dt = (DataTable)Session["dttable"];
dt.DefaultView.Sort = sortExpression + direction;
GridView1.DataSource = dt;
GridView1.DataBind();
}
public SortDirection SortDirection
{
get
{
if (ViewState["SortDirection"] == null)
{
ViewState["SortDirection"] = SortDirection.Ascending;
}
return (SortDirection)ViewState["SortDirection"];
}
set
{
ViewState["SortDirection"] = value;
}
}

}
EN

回答 1

Stack Overflow用户

发布于 2012-09-27 20:05:05

您有一个用于在ViewState中存储SortDirection的属性,但是我没有看到您在排序代码中的任何地方使用它。我将在这里使用视图状态项来同时保留SortExpression和SortDirection。

代码语言:javascript
复制
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    if (e.SortExpression.Equals(CurrentSortExpression, StringComparison.OrdinalIgnoreCase))
    {
        // Same sort expression, toggle direction
        // This would probably be better in a private method or extension method
        if (CurrentSortDirection == SortDirection.Ascending)
            CurrentSortDirection  = SortDirection.Descending;
        else
            CurrentSortDirection = SortDirection.Ascending;

    }
    else
    {
        // Different sort expression, default to asc
        CurrentSortExpression = e.SortExpression;
        CurrentSortDirection = SortDirection.Ascending;
    }

    string direction = "ASC";
    if (CurrentSortDirection == SortDirection.Descending)
        direction = " DESC";

    DataTable dt = (DataTable)Session["dttable"];
    dt.DefaultView.Sort = CurrentSortExpression + direction;
    GridView1.DataSource = dt;
    GridView1.DataBind();
}

public SortDirection CurrentSortDirection  // renaming to make it distinguishable
{
    get
    {
        return (SortDirection)(ViewState["SortDirection"] ?? SortDirection.Ascending);
    }
    set
    {
        ViewState["SortDirection"] = value;
    }
}

public string CurrentSortExpression
{
    get
    {
        return ViewState["SortExpression"] ?? "some default expression";
    }
    set
    {
        ViewState["SortExpression"] = value;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12620696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档