Sorting gridview

旧巷老猫 提交于 2019-12-20 02:51:14

问题


I have a gridview where I bind a datasource, and I had to add sorting for this gridview; I added the code below to that, but it didn't work well.

private string ConvertSortDirectionToSql(SortDirection sortDireciton)
{
    string m_SortDirection = String.Empty;

    switch (sortDireciton)
    {
        case SortDirection.Ascending:
            m_SortDirection = "ASC";
            break;

        case SortDirection.Descending:
            m_SortDirection = "DESC";
            break;
    }

    return m_SortDirection;
}

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    DataTable m_DataTable = GridView1.DataSource as DataTable;

    if (m_DataTable != null)
    {
        DataView m_DataView = new DataView(m_DataTable);
        m_DataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);

        GridView1.DataSource = m_DataView;
        GridView1.DataBind();
    }
}

回答1:


You can use this, as I had the same problem, and I solved it like this.

public string SortingExpression
{
    get
    {
        if (this.ViewState["SortExpression"] == null)
            return "";
        else
            return (string)this.ViewState["SortExpression"];
    }

    set
    {
        this.ViewState["SortExpression"] = value;
    }
}

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    DataTable m_DataTable = GridView1.DataSource as DataTable;

    if (m_DataTable != null)
    {
        DataView m_DataView = new DataView(m_DataTable);
        SortingExpression = e.SortExpression + " " + (SortingExpression.Contains("ASC") ? "DESC" : "ASC");
        m_DataView.Sort =SortingExpression;

        GridView1.DataSource = m_DataView;
        GridView1.DataBind();
    }
}



回答2:


Maybe this could help if your sortdirection is always ascending.




回答3:


Try this out. This method worked for me.

dt is the datatable containing the values.

 protected void onSorting_Gridview1(object sender, GridViewSortEventArgs e)
            {
                string _sortDirection = dir.ToString();
                if(_sortDirection.Equals("Ascending"))
                {
                _sortDirection = "ASC";
                dir = SortDirection.Descending;

            }
            else
            {
                _sortDirection="DESC";
                dir = SortDirection.Ascending;

            }

            if (dt != null)
            {
                //Sort the data.
                dt.DefaultView.Sort = e.SortExpression + " " + _sortDirection;
                gridView1.DataSource = dt;
                gridView1.DataBind();
            }

        }


 public SortDirection dir
    {
        get
        {
            if (ViewState["DIR"] == null)
            {
               ViewState["DIR"] = SortDirection.Ascending;
            }
            return (SortDirection)ViewState["DIR"];
        }
        set
        {
           ViewState["DIR"] = value;
        }
    }


来源:https://stackoverflow.com/questions/3966835/sorting-gridview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!