如何在没有数据源的情况下进行gridview排序?

时间:2013-08-13 14:09:04

标签: asp.net sql

我正在尝试对没有数据源的gridview进行排序和分页,但是当我点击gridview的标题对其进行排序时,没有任何反应,但是当我点击分页工作正常并且没有错误时。怎么办呢?

这是我的代码:

 protected void Page_Load(object sender, EventArgs e)
    {
        dbBind();
    }

    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        DataTable dtSortTable = GridView1.DataSource as DataTable;
        if (dtSortTable != null)
        {
            DataView dvSortedView = new DataView(dtSortTable);
            dvSortedView.Sort = e.SortExpression + " " + getSortDirectionString(e.SortDirection);
            GridView1.DataSource = dvSortedView;
            GridView1.DataBind();
        }
    }

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

        if(sortDirection== SortDirection.Ascending)
        {
           newSortDirection = "ASC";
        }
        else
        {
           newSortDirection = "DESC";
        }

        return newSortDirection;
    }

    private void dbBind()
    {

        DataSet ds;

        string startdate = (string)(Session["startdate"]);
        string enddate = (string)(Session["enddate"]);

        var format = "dd/MM/yyyy";
        DateTime one = DateTime.ParseExact(startdate, format, CultureInfo.InvariantCulture);
        DateTime two = DateTime.ParseExact(enddate, format, CultureInfo.InvariantCulture);


        if (two >= one)
        {

            SqlConnection conn = new SqlConnection("Data Source=localhost;Initial Catalog=n;Integrated Security=True");
            //conn.Open();
            SqlCommand cmd = new SqlCommand("SELECT [AmountSpent], [TimeDate]=convert(nvarchar,timedate,103), [StallNo] FROM [StudentTransactions] WHERE TimeDate BETWEEN @one AND @two", conn);
            cmd.Parameters.AddWithValue("@one", one);
            cmd.Parameters.AddWithValue("@two", two);

            ds = new DataSet();
            using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
            {
                sda.Fill(ds);
                if (ds.Tables.Count > 0)
                {
                    DataView dv = ds.Tables[0].DefaultView;
                    if (ViewState["SortDirection"] != null)
                    {
                        sortDirection = ViewState["SortDirection"].ToString();
                    }

                    if (ViewState["SortExpression"] != null)
                    {
                        sortExpression = ViewState["SortExpression"].ToString();
                        dv.Sort = string.Concat(sortExpression, " ", sortDirection);
                    }
                    GridView1.DataSource = dv;
                    GridView1.DataBind();
                }
            }  
            //GridView1.DataBind();
            //conn.Close();
        }

        else
        {
            GridView1.Visible = false;
            string strMsg = " Data not found for the choosen dates.";
            Response.Write("<script>alert('" + strMsg + "')</script>");
        }


    }

0 个答案:

没有答案