数据查询出处
在一个数据表点击"下一页"时,然后输入需要查询的条件,再按"查询"按钮时,
有如下报错:
无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。
其代码如下:
protected void BindGrid()
{
SqlConnection Conn=new SqlConnection(ConfigurationSettings.AppSettings["edu"]);
string sql="select * from stu_s3";
SqlDataAdapter myCommand=new SqlDataAdapter(sql,Conn);
DataSet ds=new DataSet();
DataGrid1.DataSource = CreateDataSource();
myCommand.Fill(ds,"stu_s3");
DataGrid1.DataSource=ds.Tables["stu_s3"].DefaultView;
DataGrid1.DataBind();
ShowStats();
}
DataView CreateDataSource()
{
SqlConnection myconnection =new SqlConnection(ConfigurationSettings.AppSettings["edu"]);
string selectCmd1="select * from stu_s3 ";
SqlDataAdapter mycommand=new SqlDataAdapter(selectCmd1,myconnection);
myconnection.Open();
DataSet ds =new DataSet();
mycommand.Fill(ds,"stu_s3");
return ds.Tables["stu_s3"].DefaultView;
}
protected void MyDataGrid_Page(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
BindData();
}
public void BindData()
{
DataView dv =CreateDataSource();
if (!IsPostBack)
{
recordcount=dv.Count ; //获取DataView中的记录的数量
pagecount=recordcount % DataGrid1.PageSize;
if (recordcount % DataGrid1.PageSize!=0)
{
pagecount++;
}
lbl_pagecount.Text=pagecount.ToString();
lbl_currentpage.Text="1"; //默认显示时当前页面数为:1
}
DataGrid1.DataSource=dv;
DataGrid1.DataBind();
}
protected void PagerButtonClick(Object sender, EventArgs e)
{
// Used by external paging UI.
String arg = ((LinkButton)sender).CommandArgument;
DataGrid1.CurrentPageIndex=0;
switch(arg)
{
case ("next"):
if (DataGrid1.CurrentPageIndex < (DataGrid1.PageCount - 1))
DataGrid1.CurrentPageIndex ++;
break;
case ("prev"):
if (DataGrid1.CurrentPageIndex > 0)
DataGrid1.CurrentPageIndex --;
break;
case ("last"):
DataGrid1.CurrentPageIndex = (DataGrid1.PageCount - 1);
break;
default:
// Page number.
DataGrid1.CurrentPageIndex = Convert.ToInt32(arg);
break;
}
BindGrid();
}
protected void ShowStats()
{
lbl_currentpage.Text = "当前页是第 : "+ (DataGrid1.CurrentPageIndex+(int)1)+" 页";
lbl_pagecount.Text = "该数据总共有: " + DataGrid1.PageCount+" 页";
}
private void page_Click(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex=e.NewPageIndex;
BindGrid();
}
敬请各位大侠求助.
问题点数:0、回复次数:2Top
1 楼smx717616(又笨又不努力)回复于 2004-05-02 13:26:09 得分 0
无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount
对就是这了,下一页前判断一下
CurrentPageIndex <PageCount and CurrentPageIndex >0,c#我不懂Top
2 楼cuike519(I will be back!)回复于 2004-05-02 13:31:19 得分 0
先判断页面的数量PageCount是否大于当前的页码!如果嫌麻烦可以在每次执行查询以后将CurrentPageIndex变成第一页(这样最省事)!Top




