分页出错(问题解决就结贴)
一、问题描述:
当查询出来的数据超过2页,比如有3页时,点击“下一页”没法翻到第三页,一直都是在第二页。
二、全部代码:
1、页面装载代码:
private void Page_Load(object sender, System.EventArgs e)
{
btnFirst.Text = "最首页";
btnPrev.Text = "前一页";
btnNext.Text = "下一页";
btnLast.Text = "最后页";
OpenDatabase();
BindGrid();
}
2、数据库关闭打开代码:
private void OpenDatabase()
{
cn.Close();
cn.Open();
}
3、显示总共多少页和当前第几页的代码:
private void ShowStats()
{
lblCurrentIndex.Text = "第 " + (MyDataGrid.CurrentPageIndex + 1).ToString() + " 页";
lblPageCount.Text = "总共 " + MyDataGrid.PageCount.ToString() + " 页";
}
4、“上一页”、“下一页”等按钮的单击代码:
public void PagerButtonClick(object sender, EventArgs e)
{
string arg = ((LinkButton)sender).CommandArgument.ToString();
switch(arg)
{
case "next":
if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
{
MyDataGrid.CurrentPageIndex += 1;
}
break;
case "prev":
if (MyDataGrid.CurrentPageIndex > 0)
{
MyDataGrid.CurrentPageIndex -= 1;
}
break;
case "last":
MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1);
break;
default:
MyDataGrid.CurrentPageIndex = System.Convert.ToInt32(arg);
break;
}
BindGrid();
ShowStats();
}
5、执行SQL语句的代码:
public void BindGrid()
{
string flmc=DropDownList1.SelectedItem.Text;
string sql_tj="";
if (flmc!="所有代码")
sql_tj=" and flmc='"+flmc+"'";
string sqlstring="select * from clgl_xtdm where xh like '%'";
sqlstring=sqlstring+sql_tj;
sqlstring+=" order by fldh,xmmc";
OleDbConnection myConnection = cn;
DataSet ds = new DataSet();
OleDbDataAdapter adapter = new OleDbDataAdapter(sqlstring,myConnection);
adapter.Fill(ds,"clgl_xtdm");
MyDataGrid.DataSource = ds.Tables["clgl_xtdm"].DefaultView;
MyDataGrid.DataBind();
MyDataGrid.CurrentPageIndex = 0;//(问题好象就出在这句,但如果这句取消的话,在查询条件改变的时候程序会报错:无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount)
ShowStats();
}
6、进行页数统计的代码:
public void MyDataGrid_Page(object sender, DataGridPageChangedEventArgs e)
{
int startIndex ;
startIndex = MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize;
MyDataGrid.CurrentPageIndex = e.NewPageIndex;
BindGrid();
ShowStats();
}
7、下拉框的值改变时的事件代码(无代码,里面是空的)
private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
四、问题好象就出在第5点“执行SQL语句的代码:”里的一句代码
MyDataGrid.CurrentPageIndex = 0;//(问题好象就出在这句,但如果这句取消的话,在查询条件改变的时候程序会报错:无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount)
请问应该怎么修改?