【问题标题】:Gridview Control Sorting DirectionGridview控件排序方向
【发布时间】:2011-10-06 14:21:28
【问题描述】:

gridview 控件的默认排序顺序是先升后降。现在下面我有代码来改变它。到现在为止还挺好。但是当我再次单击另一列时,它会将排序方向再次设置为升序。无论是哪一列,它都会在每次点击时在降序和升序之间交替。现在我真正想要的是第一次单击任何列是下降的,如果我第二次单击任何列(第二次意味着连续),它应该是上升的。示例:我有 2 列,一列是薪水,另一列是年龄。现在我点击薪水,第一个排序方向是降序,而不是默认的升序(代码就是这样做的)。现在,当我点击年龄时,它会将排序方向切换为升序,我希望它在我切换到另一列时保持不变,但是我应该第二次再次点击薪水,它应该切换到升序(因为降序是第一次点击)。有什么建议吗?

我的代码:

public SortDirection GridViewSortDirection
{
    get
    {
        if (ViewState["sortDirection"] == null) 
            ViewState["sortDirection"] = SortDirection.Ascending;
        return (SortDirection)ViewState["sortDirection"];
    }
    set
    {
        ViewState["sortDirection"] = value; 
    }
}
protected void GridView1_OnSorting(object sender, GridViewSortEventArgs e)
{
    if (ViewState["sortDirection"] == null)
    {
        e.SortDirection = SortDirection.Descending;
    }
    else if (GridViewSortDirection == SortDirection.Ascending)
    {
        e.SortDirection = SortDirection.Descending;
    }
    else if (GridViewSortDirection == SortDirection.Descending)
    {
        e.SortDirection = SortDirection.Ascending;
    }

    GridViewSortDirection = e.SortDirection;
}

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    尝试检查以确定 SortExpression 是否已从先前设置的 SortExpression 更改,如果是,则默认 SortDirection 为 Descending。

    protected void GridView1_OnSorting(object sender, GridViewSortEventArgs e)
    {
        if (e.SortExpression != GridView1.SortExpression)
        {
            e.SortDirection = SortDirection.Descending;
            GridViewSortDirection = e.SortDirection;
        }
        else if (GridViewSortDirection == SortDirection.Ascending)
        {
            e.SortDirection = SortDirection.Descending;
        }
        else if (GridViewSortDirection == SortDirection.Descending)
        {
            e.SortDirection = SortDirection.Ascending;
        }
    
        GridViewSortDirection = e.SortDirection;
    }
    

    【讨论】:

    • 我假设这部分是你建议的: if (e.SortExpression != GridView1.SortExpression) { e.SortDirection = SortDirection.Descending; } 应该只是添加到我的代码中,在受保护的 void GridView1_OnSorting(object sender, GridViewSortEventArgs e) 中的第一件事?声明
    • 因为我不确定,因为我从另一个论坛讨论中获得了我的代码。我真的只看懂了一半的代码。
    • 我已经根据您上面的代码更新了我的答案。它应该可以工作,但是我无法对其进行测试。
    • 好人,谢谢!奇迹般有效。我非常感谢您的帮助,您为我节省了很多时间和键盘。 (仍在学习功能)
    • 除了关键部分外,我有点得到代码: if (e.SortExpression != GridView1.SortExpression) { e.SortDirection = SortDirection.Descending; GridViewSortDirection = e.SortDirection; } 上面的部分是什么意思?
    猜你喜欢
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    相关资源
    最近更新 更多