排序在GridView控件不工作 [英] Sorting in gridview is not working

查看:117
本文介绍了排序在GridView控件不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好 我想排序功能在网格视图,但它不是working.Can一些身体帮助?

code:

 私人字符串ConvertSortDirectionToSql(SortDirection sortDirection)
{
    字符串newSortDirection =的String.Empty;

    开关(sortDirection)
    {
        案例SortDirection.Ascending:
            newSortDirection =ASC;
            打破;

        案例SortDirection.Descending:
            newSortDirection =DESC;
            打破;
    }

    返回newSortDirection;
}
受保护的数据集FillDataSet()
{
    字符串源=数据库= GridTest;服务器=本地主机; Trusted_Connection = YES;
    CON =新的SqlConnection(源);
    CMD =新的SqlCommand(proc_mygrid,CON);
    DS =新的DataSet();
    DA =新的SqlDataAdapter(CMD);
    da.Fill(DS);
    GridView1.DataSource = DS;
    GridView1.DataBind();

    返回DS;


}
 保护无效GridView1_Sorting(对象发件人,GridViewSortEventArgs E)
{
    数据表DT = GridView1.DataSource的数据表;
    如果(DT!= NULL)
    {
        数据视图DV =新的数据视图(DT);
        dv.Sort = e.SortEx pression ++ ConvertSortDirectionToSql(e.SortDirection);
        GridView1.DataSource = DV;
        GridView1.DataBind();
   }
 

下面DT即将null.why?请帮助表示感谢。

编辑:

 在此输入code< ASP:GridView控件ID =GridView1=服务器的cellpadding =4前景色=#333333
    网格线=无AllowPaging =真正的AllowSorting =真,每页=12
    onpageindexchanging =GridView1_PageIndexChanging
    onsorting =GridView1_Sorting>
 

修改(总计code)

 公共部分类_Default:System.Web.UI.Page
{
    SqlConnection的骗子;
    的SqlCommand CMD;
    数据集DS;
    SqlDataAdapter的DA;
    保护无效的Page_Load(对象发件人,EventArgs的)
    {

    }

    私人字符串ConvertSortDirectionToSql(SortDirection sortDirection)
    {
        字符串newSortDirection =的String.Empty;

        开关(sortDirection)
        {
            案例SortDirection.Ascending:
                newSortDirection =ASC;
                打破;

            案例SortDirection.Descending:
                newSortDirection =DESC;
                打破;
        }

        返回newSortDirection;
    }
    受保护的数据集FillDataSet()
    {
        字符串源=数据库= GridTest;服务器=本地主机; Trusted_Connection = YES;
        CON =新的SqlConnection(源);
        CMD =新的SqlCommand(proc_mygrid,CON);
        DS =新的DataSet();
        DA =新的SqlDataAdapter(CMD);
        da.Fill(DS);
        GridView1.DataSource = DS;
        GridView1.DataBind();

        返回DS;


    }
    保护无效的GetValues​​(对象发件人,EventArgs的)
    {
        FillDataSet();
    }

    保护无效GridView1_PageIndexChanging(对象发件人,GridViewPageEventArgs E)
    {
       INT newPagenumber = e.NewPageIndex;
       GridView1.PageIndex = newPagenumber;
       GridView1.DataSource = FillDataSet();
       GridView1.DataBind();

    }


    保护无效GridView1_Sorting(对象发件人,GridViewSortEventArgs E)
    {

        的DataSet ds为FillDataSet();
        数据表DT = ds.Tables [0];
        如果(DT!= NULL)
        {
            dt.DefaultView.Sort = e.SortEx pression ++ ConvertSortDirectionToSql(e.SortDirection);
            GridView1.DataSource = DT;
            GridView1.DataBind();
        }
 

解决方案

code:

 私人字符串GetSortDirection(字符串列)
{
       字符串sortDirection =DESC;
       字符串SORTEX pression =的ViewState [SORTEX pression]作为串;

       如果(SORTEX pression!= NULL)
       {
            如果(SORTEX pression ==列)
            {
                字符串lastDirection =的ViewState [SortDirection]作为串;
                如果((lastDirection = NULL)及!及(lastDirection ==降序))
                {
                    sortDirection =ASC;
                }
            }
       }

       的ViewState [SortDirection] = sortDirection;
       的ViewState [SORTEX pression] =列;

       返回sortDirection;
}

保护无效GridView1_Sorting(对象发件人,GridViewSortEventArgs E)
{
   。DataTable的DT =((数据集)会话[myDataSet])表[0];
   dt.DefaultView.Sort = e.SortEx pression ++ GetSortDirection(e.SortEx pression);
   GridView1.DataSource = DT;
   GridView1.DataBind();
}
 

Dear All, I am trying Sorting functionality in Grid view but its not working.Can some body help?

Code:

  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)
{
    DataTable dt = GridView1.DataSource as DataTable;
    if (dt != null)
    {
        DataView dv = new DataView(dt);
        dv.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);
        GridView1.DataSource = dv;
        GridView1.DataBind();
   }

Here dt is coming null.why? pls help thanks.

EDIT:

enter code here  <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" 
    GridLines="None" AllowPaging="true" AllowSorting="true" PageSize="12" 
    onpageindexchanging="GridView1_PageIndexChanging" 
    onsorting="GridView1_Sorting">

EDIT(Total code)

public partial class _Default : System.Web.UI.Page 
{
    SqlConnection con;
    SqlCommand cmd;
    DataSet ds;
    SqlDataAdapter da;
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    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 GetValues(object sender, EventArgs e)
    {
        FillDataSet();
    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
       int newPagenumber = e.NewPageIndex;
       GridView1.PageIndex = newPagenumber;
       GridView1.DataSource = FillDataSet();
       GridView1.DataBind();

    }


    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {

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

解决方案

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 dt = ((DataSet)Session["myDataSet"]).Tables[0];
   dt.DefaultView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);
   GridView1.DataSource = dt;
   GridView1.DataBind();
}

这篇关于排序在GridView控件不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆