C# 对搜索到的记录进行排序不起作用

C# 对搜索到的记录进行排序不起作用,c#,asp.net,gridview,C#,Asp.net,Gridview,我在网格视图中按升序和降序方向对搜索到的记录进行排序时遇到问题。我已将以下代码应用于普通gridview(所有记录),它工作正常,但当我尝试从所有记录中搜索任何记录,并尝试对这些搜索到的记录进行排序时,以下代码既不执行任何操作,也不抛出任何错误:以下代码用于排序: protected void GridView2_Sorting(object sender, GridViewSortEventArgs e) { string sortExpression = e.SortExpression;

我在网格视图中按升序和降序方向对搜索到的记录进行排序时遇到问题。我已将以下代码应用于普通gridview(所有记录),它工作正常,但当我尝试从所有记录中搜索任何记录,并尝试对这些搜索到的记录进行排序时,以下代码既不执行任何操作,也不抛出任何错误:以下代码用于排序:

protected void GridView2_Sorting(object sender, GridViewSortEventArgs e)
{
string sortExpression = e.SortExpression;

if (GridViewSortDirection == SortDirection.Ascending)
{
    GridViewSortDirection = SortDirection.Descending;
    SortGridView1(sortExpression, DESCENDING);
}
else
{
    GridViewSortDirection = SortDirection.Ascending;
    SortGridView1(sortExpression, ASCENDING);
}
}

private void SortGridView1(string sortExpression, string direction)
{

DataTable dt = SearchTable().Tables[0];

DataView dv = new DataView(dt);
dv.Sort = sortExpression + direction;

GridView2.DataSource = dv;
GridView2.DataBind();

 }
搜索功能代码为:

public DataSet SearchTable()
{

    string sql1 = "SELECT * from dbo.Documents1";

    bool flag = false;

    if (!txtRef.Text.Equals(""))
    {
        if (flag == false)
        {
            sql1 = sql1 + " where Ref LIKE N'%" + txtRef.Text + "%'";
            flag = true;

        }
        else
        {
            sql1 = sql1 + "  and Ref LIKE N'%" + txtRef.Text + "%'";
        }
    }

    if (!txtSubject.Text.Equals(""))
    {
        if (flag == false)
        {
            sql1 = sql1 + " where Subject LIKE N'%" + txtSubject.Text + "%'";
            flag = true;

        }
        else
        {
            sql1 = sql1 + "  and Subject LIKE N'%" + txtSubject.Text + "%'";
        }
    }

    }

    using (SqlConnection con = new SqlConnection("Data Source=MEHDI-PC\\SQLEXPRESS;Initial Catalog=PIMS;Integrated Security=True"))
    {
        using (SqlCommand cmd = new SqlCommand())
        {

            cmd.Connection = con;
            cmd.CommandText = sql1 + ";";
            //cmd.CommandType = CommandType.StoredProcedure;
            con.Open();
            //dataset object to get all select statement results
            DataSet ds = new DataSet();

            //sql dataadoptor to fill dataset
            using (SqlDataAdapter adp = new SqlDataAdapter(cmd))
            {
                adp.Fill(ds);
            }
            if (con.State == ConnectionState.Open)
            {
                con.Close();
            }

            return ds;

        }
    }
}
PageLoad事件函数为:

        protected void Page_Load(object sender, EventArgs e)
    {
        GridView1.DataSource = rpt.Documents1s.ToList();
        GridView1.DataBind();

        if (!IsPostBack)
        {
            BindGrid();

            MultiView1.SetActiveView(vHome);

            btnBacktoHome.Visible = false;
            lblStatus.Visible = false;
        }

    }

我不明白我错在哪里。当单击一列进行排序时,它将我从搜索的记录中取出,并对“所有记录”进行排序,这些记录放在GridView1中,而搜索的记录放在GridView2中,如代码所示。我不明白的是,为什么当我在GridView2中单击对搜索到的记录进行排序时,程序会跳转到GridView1并对所有记录进行排序。任何帮助都将不胜感激。提前感谢。

您是否在中使用了gridview绑定代码!我回来了?像

protected void Page_Load(object sender, EventArgs e)
{
   if(!IsPostBack)
    {
       //Grid Binding code 
    }
}
为您编辑页面加载代码(必须在内部添加数据绑定!
IsPostBack


我需要它来完成其他一些任务。Ramesh Rajendran,我已经添加了Page_Load()供您审阅。谢谢你的回复。我应用了你的修正,当点击一列进行排序时,它将我从搜索的记录中取出,并对“所有记录”进行排序。
protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
        GridView1.DataSource = rpt.Documents1s.ToList();
        GridView1.DataBind();

            BindGrid();

            MultiView1.SetActiveView(vHome);

            btnBacktoHome.Visible = false;
            lblStatus.Visible = false;
        }

    }