做了个查询显示的页(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();
}我把全部显示数据和按条件显示数据写在同一个方法里,请大家指点一下,谢谢。
.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();
}我把全部显示数据和按条件显示数据写在同一个方法里,请大家指点一下,谢谢。
简单处理建议:每次条件改变后执行搜索都应该把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;
正确的说是你的重新绑定有问题造成的,不过这个和分页控件有关,修改不太方便吧