以下是我的查询和分页代码,当查询出结果后,点击第二页的时候就什么也没有了:(//根据时间和姓名查询的按钮事件
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();
}
{
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();
}
{
dgpay.CurrentPageIndex=e.NewPageIndex;
dgpay.DataBind();
}这个时候简单的dgpay.DataBind()是不行的,需要重新链接数据库得到datasource
说明: 执行当前 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();
{
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();
}
DataGrid1.CurrentPageIndex = e.NewPageIndex;
BindGrid();//重新帮定DataGridBindGrid的过程:
DataGrid1.DataSource = DataSet1;//重新读一遍数据库Fill到DataSet1
DataGrid1.DataBind();
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);就可以了!