做了个查询显示的页(datagrid显示数据,dropdownlist跳转页),如果没有选择查询条件,则显示所有数据并分页;如果选择了查询条件,则显示符合条件的数据并分页。现在的问题是,如果我没有选择查询条件,比如说dropdownlist跳到第6页,这时如果我在第6页上再选择查询条件时,就会报错,如题所表示。(如果总页数是8,我现在是在第6页,而查询结果的页数小于6,那么就报错。)
.cs代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
this.Test();
}
}
                private  void Test()
{
string strSql = "";
string strSql1 = ep.ReturnSQLGroup();
if(this.ddl_Field.SelectedItem.Text == "-请选择-" && this.ddl_CreatDate.SelectedItem.Text == "-请选择-")
{
strSql = strSql1;
}
                        if(this.ddl_Field.SelectedItem.Text != "-请选择-" && this.ddl_CreatDate.SelectedItem.Text != "-请选择-")
{
string gyear=this.ddl_CreatDate.SelectedItem.Value.ToString().Trim();
string gname=this.ddl_Field.SelectedItem.Value.ToString().Trim();
strSql = strSql1 + ep.ReturnSQLGroupgy(gname,gyear);
}
this.GroupListOBCDataBind(strSql);
}
        private void GroupListOBCDataBind(string str)   
{
DataSet ds = ep.GetGroupList(str);
if(ds.Tables[0].Rows.Count>0)
{
this.dgdList.DataSource = ds;
this.dgdList.MaxRecord = ds.Tables[0].Rows.Count;
this.dgdList.DataBind();                //这句报错
}
else
{
Response.Write("Error!");
}
}
        private void dgdList_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this.dgdList.CurrentPageIndex = e.NewPageIndex;
this.Test();
                }
                private void btn_Check_Click(object sender, System.EventArgs e)   //查询按钮
{
                         this.Test();
                }我把全部显示数据和按条件显示数据写在同一个方法里,请大家指点一下,谢谢。

解决方案 »

  1.   

    错误不都给你明确说出来了吗?你在PageIndexChanged里面指定了CurrentPageIndex,到重新绑定的时候总页数都没有你指定的CurrentPageIndex大,能不错吗?
    简单处理建议:每次条件改变后执行搜索都应该把this.dgdList.CurrentPageIndex = 0;
    具体代码:private   void   GroupListOBCDataBind(string   str)       

    //在这里加上代码
    if(ViewState["strSql"] != null)  
    {
    if(ViewState["strSql"].ToString != str)
    {
    this.dgdList.CurrentPageIndex = 0;
    }
    }
    ViewState["strSql"] = str;
      

  2.   

    对.就是在每次条件改变后执行搜索都应该把this.dgdList.CurrentPageIndex   =   0;
      

  3.   

    this.dgdList.CurrentPageIndex   =   0;
    正确的说是你的重新绑定有问题造成的,不过这个和分页控件有关,修改不太方便吧
      

  4.   

    每次datasource改变的时候就要让CurrentPageIndex   =   -1;