可能是在翻页后进行了删除操作,删除了一些记录,然而在翻页事件里的值NewPageIndex 却没有变化,导致访问超出界限。你可以在void DataGrid1_PageIndexChanged(object sender, DataGridPageChangedEventArgs e) {
try {
DataGrid1.CurrentPageIndex=e.NewPageIndex;
catch
{
DataGrid1.CurrentPageIndex=e.NewPageIndex-1;
}
binddata();
}
try {
DataGrid1.CurrentPageIndex=e.NewPageIndex;
catch
{
DataGrid1.CurrentPageIndex=e.NewPageIndex-1;
}
binddata();
}
this.DataGrid1.CurrentPageIndex--;
也有可能触发了DeleteCommand 事件,在翻页的时候你调试一下这个事件是否执行了?
{
sqlcomm.ExecuteNonQuery();
Label1.Text = "<b>已删除记录</b><br>" + delstr;
if(this.DataGrid1.CurrentPageIndex!=0&&this.DataGrid1.Items.Count==1)//加个判断
this.DataGrid1.CurrentPageIndex--;
}
{
binddata();
if(!IsPostBack)
{
binddata();
Label1.Visible=false;
}
}改为:
public void Page_Load(Object sender,EventArgs e)
{
if(!IsPostBack)
{
binddata();
Label1.Visible=false;
}
}
另外在DeleteCommand事件处理程序中的sqlconn.Close();之后,还应该重新绑定数据,为防止当前页已没有数据,可以跳转到第一页,象这样:sqlconn.Close();
DataGrid1.CurrentPageIndex=0;
binddata();