以下是我的查询和分页代码,当查询出结果后,点击第二页的时候就什么也没有了:(//根据时间和姓名查询的按钮事件
private void btnSearch_Click(object sender, System.EventArgs e)
{
string wquery="where 1=1";
string strsql="select Author,Title,VersionDate,Moey,ECheck,DCheck,MCheck from pay ";
    string strorder=" order by Author"; if (clday.SelectedDate<= clday2.SelectedDate && clday.TodaysDate.ToShortDateString()!=lbDate.Text)
{
wquery+=" and VersionDate between '"+lbDate.Text+"' and '"+lbDate2.Text+"'";
} if (clday.TodaysDate.ToShortDateString()==lbDate.Text && clday2.TodaysDate.ToShortDateString()==lbDate2.Text)
{
wquery+=" ";
}
    
if (tbAuthor.Text!="")
{
wquery+=" and Author like '"+tbAuthor.Text+"%'";
}    
strsql=strsql+wquery+strorder;
 
string strcon="server=(local);uid=sa;pwd=sa.cn;database=pay";
SqlConnection mycon=new SqlConnection(strcon);
SqlDataAdapter myad=new SqlDataAdapter(strsql,mycon);
DataSet ds=new DataSet();
myad.Fill(ds,"PayMoney");
dgpay.DataSource=ds.Tables["PayMoney"].DefaultView;
dgpay.DataBind();
mycon.Close();}对结果进行分页的事件
private void dgpay_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
   dgpay.CurrentPageIndex=e.NewPageIndex;
   dgpay.DataBind();
}

解决方案 »

  1.   

    要重新绑定:System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    dgpay.CurrentPageIndex=e.NewPageIndex;
    string strcon="server=(local);uid=sa;pwd=sa.cn;database=pay";
    SqlConnection mycon=new SqlConnection(strcon);
    SqlDataAdapter myad=new SqlDataAdapter(strsql,mycon);
    DataSet ds=new DataSet();
    myad.Fill(ds,"PayMoney");
    dgpay.DataSource=ds.Tables["PayMoney"].DefaultView;
    dgpay.DataBind();
    mycon.Close();
    }
      

  2.   

    private void dgpay_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
       dgpay.CurrentPageIndex=e.NewPageIndex;
       dgpay.DataBind();
    }这个时候简单的dgpay.DataBind()是不行的,需要重新链接数据库得到datasource
      

  3.   

    ExecuteReader: CommandText 属性尚未初始化 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: ExecuteReader: CommandText 属性尚未初始化
    strs --- public string... dgpay.CurrentPageIndex=e.NewPageIndex;
    string strcon="server=(local);uid=sa;pwd=sa;database=pay";
    string strsql=strs;
    SqlConnection mycon=new SqlConnection(strcon);
    SqlDataAdapter myad=new SqlDataAdapter(strsql,mycon);
    DataSet ds=new DataSet();
    myad.Fill(ds,"PayMoney");
    dgpay.DataSource=ds.Tables["PayMoney"].DefaultView;
    dgpay.DataBind();
    mycon.Close();
      

  4.   

    要重新绑定:private void btnSearch_Click(object sender, System.EventArgs e)
    {
    string wquery="where 1=1";
    string strsql="select Author,Title,VersionDate,Moey,ECheck,DCheck,MCheck from pay ";
        string strorder=" order by Author"; if (clday.SelectedDate<= clday2.SelectedDate && clday.TodaysDate.ToShortDateString()!=lbDate.Text)
    {
    wquery+=" and VersionDate between '"+lbDate.Text+"' and '"+lbDate2.Text+"'";
    } if (clday.TodaysDate.ToShortDateString()==lbDate.Text && clday2.TodaysDate.ToShortDateString()==lbDate2.Text)
    {
    wquery+=" ";
    }
        
    if (tbAuthor.Text!="")
    {
    wquery+=" and Author like '"+tbAuthor.Text+"%'";
    }    
    strsql=strsql+wquery+strorder;
             //加上这句
             ViewState["strSql"] = strsql;
    string strcon="server=(local);uid=sa;pwd=sa.cn;database=pay";
    SqlConnection mycon=new SqlConnection(strcon);
    SqlDataAdapter myad=new SqlDataAdapter(strsql,mycon);
    DataSet ds=new DataSet();
    myad.Fill(ds,"PayMoney");
    dgpay.DataSource=ds.Tables["PayMoney"].DefaultView;
    dgpay.DataBind();
    mycon.Close();}
    System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    dgpay.CurrentPageIndex=e.NewPageIndex;
    string strcon="server=(local);uid=sa;pwd=sa.cn;database=pay";
    SqlConnection mycon=new SqlConnection(strcon);
    /*********************************/
    SqlDataAdapter myad=new SqlDataAdapter(ViewState["strSql"].ToString(),mycon);
    /*******************************/DataSet ds=new DataSet();
    myad.Fill(ds,"PayMoney");
    dgpay.DataSource=ds.Tables["PayMoney"].DefaultView;
    dgpay.DataBind();
    mycon.Close();
    }
      

  5.   

    DataGrid1.EditItemIndex = -1;
    DataGrid1.CurrentPageIndex = e.NewPageIndex;
    BindGrid();//重新帮定DataGridBindGrid的过程:
    DataGrid1.DataSource = DataSet1;//重新读一遍数据库Fill到DataSet1
    DataGrid1.DataBind();
      

  6.   

    做一个绑定的函数,如
    void dgbind(string where)
    {
      //where就是你要选择数据库哪些记录的语句的条件,对于查询来讲就是将查询条件传过来
      string selectstr = "select * from 数据库名 where " +where;
      执行得到一个DataTable db
      dg.datasource = db
      dg.databind();//不过这里要注意一下,因为此前datagrid的currentpageindex可能为超过现在的
        //pagecount所以要判断一下,并加以理
    }
    每次点击“查询”时,将条件得到,传到dgbind(string where)来,但要注意保存查询条件,可以用一个label来保存,这样,在对查询结果分页时,在分页事件里写
      dg.Currentpageindex = e.Newpageindex;
      dgbind(label.Text);就可以了!