简体   繁体   English

如何在gridview中实现排序功能?

[英]How to implement sorting functionality in gridview?

I am trying to implement sorting functionality in grid view but its not working.. Code: 我试图在网格视图中实现排序功能,但它无法正常工作..代码:

//enter code here 
public partial class _Default : System.Web.UI.Page 
{
SqlConnection con;
SqlCommand cmd;
DataSet ds;
SqlDataAdapter da;
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Session["myDataSet"] = FillDataSet();

    }
}

private string ConvertSortDirectionToSql(SortDirection sortDirection)
{
    string newSortDirection = String.Empty;

    switch (sortDirection)
    {
        case SortDirection.Ascending:
            newSortDirection = "ASC";
            break;

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

    return newSortDirection;
}
protected DataSet FillDataSet()
{
    string source = "Database=GridTest;Server=Localhost;Trusted_Connection=yes";
    con = new SqlConnection(source);
    cmd = new SqlCommand("proc_mygrid", con);
    ds = new DataSet();
    da = new SqlDataAdapter(cmd);
    da.Fill(ds);
    GridView1.DataSource = ds;
    GridView1.DataBind();

    return ds;
}

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{

    //DataSet ds = FillDataSet();
    DataTable dt = ((DataSet)Session["myDataSet"]).Tables[0];
    if (dt != null)
    {
        dt.DefaultView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }

Can somebody suggest where I am going wrong? 有人可以建议我哪里出错吗?

EDIT: 编辑:

enter code here  DataTable dtbl = ((DataSet)Session["myDataSet"]).Tables[0];
    dtbl.DefaultView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);
    GridView1.DataSource = dtbl;
    GridView1.DataBind();

Here is the running code: 这是运行代码:

  private string GetSortDirection(string column)
{


    string sortDirection = "DESC";


    string sortExpression = ViewState["SortExpression"] as string;

    if (sortExpression != null)
    {

        if (sortExpression == column)
        {
            string lastDirection = ViewState["SortDirection"] as string;
            if ((lastDirection != null) && (lastDirection == "DESC"))
            {
                sortDirection = "ASC";
            }
        }
    }


    ViewState["SortDirection"] = sortDirection;
    ViewState["SortExpression"] = column;

    return sortDirection;
}

 protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{

    DataTable dtbl = ((DataSet)Session["myDataSet"]).Tables[0];
    dtbl.DefaultView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);
    GridView1.DataSource = dtbl;
    GridView1.DataBind();

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM