天天看點

asp GridView AllowSorting 不生效

最近在維護一個N年老項目,想着在Gridview 設定 AllowSorting="true" 但排序還不管用。

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
          AutoGenerateColumns="False" 
         CellPadding="4" CssClass ="gridview" 
         onpageindexchanging="GridView1_PageIndexChanging" PageSize="20" 
         EnableSortingAndPagingCallbacks ="false" Width="97%" 
                    AllowSorting="true"
                    OnSorting="GvList_Sorting" 
                    >      

        後來,發現必須指定要排序的列才行的。 這樣的列頭下面滑鼠移動上去就會出現一個下滑列。

asp GridView AllowSorting 不生效
protected void GvList_Sorting(object sender, GridViewSortEventArgs e)
    {
        Console.WriteLine("單擊排序。。。");


        string sortExpression = e.SortExpression;

        if (GridViewSortDirection == SortDirection.Ascending)

        {

            GridViewSortDirection = SortDirection.Descending;

            SortGridView(sortExpression, "desc");

        }

        else

        {

            GridViewSortDirection = SortDirection.Ascending;

            SortGridView(sortExpression, "asc");

        }

    }
    public SortDirection GridViewSortDirection
    {

        get

        {

            if (ViewState["sortDirection"] == null)

                ViewState["sortDirection"] = SortDirection.Ascending;

            return (SortDirection)ViewState["sortDirection"];

        }

        set { ViewState["sortDirection"] = value; }

    }

    private void SortGridView(string sortExpression, string direction)
    {
        DataTable dataTable = ((DataSet)GridView1.DataSource).Tables[0];
        //dataTable.DefaultView.Sort = "Id DESC";//按Id倒序
        //dataTable.DefaultView.Sort = "Id DESC,Name desc";//按Id倒序和Name倒序

        dataTable.DefaultView.Sort = sortExpression+" "+ direction;//按Id倒序
        dataTable = dataTable.DefaultView.ToTable();
        GridView1.DataSource = dataTable;
        GridView1.DataBind();
    }