dategrid里,有删除第二页(或着是第三页,第四页...)的最后一条记录时,出错,请各位帮我看一下!报错信息
System.Web.HttpException: 无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。
报错行134行代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.IO;
using System.Data.SqlClient;
using System.Configuration;namespace JianShen.Admin
{
/// <summary>
/// BslbList 的摘要说明。
/// </summary>
public class BslbList : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox cls_name;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private string sql;
protected System.Web.UI.WebControls.DataGrid People;
private string strCnn;
private void Page_Load(object sender, System.EventArgs e)
{ strCnn = ConfigurationSettings.AppSettings["strConnection"].ToString();
if (!IsPostBack)
{
sql = "Select * FROM bslb";
People.DataSource = CreateDataSource();
People.DataBind();
} }
public ICollection CreateDataSource ()
{
SqlConnection conn = new SqlConnection(strCnn); SqlDataAdapter db_sqladaptor = new SqlDataAdapter(sql,conn); DataSet ds = new DataSet();
db_sqladaptor.Fill(ds,"MyDataResult"); DataView myView = ds.Tables["MyDataResult"].DefaultView;
return myView;
} public void Page_Grid(object sender, DataGridPageChangedEventArgs e)
{
sql = "Select * FROM bslb";
// Set CurrentPageIndex to the page the user clicked.
People.CurrentPageIndex = e.NewPageIndex; // Rebind the data.
People.DataSource = CreateDataSource();
People.DataBind(); } public void People_Edit(object sender, DataGridCommandEventArgs e)
{
sql = "Select * FROM bslb"; People.EditItemIndex = e.Item.ItemIndex;
People.DataSource = CreateDataSource();
People.DataBind(); }
public void People_Cancel(object sender, DataGridCommandEventArgs e)
{
sql = "Select * FROM bslb";
People.EditItemIndex = -1;
People.DataSource = CreateDataSource();
People.DataBind(); } public void People_Update(object sender, DataGridCommandEventArgs e)
{
string stringlb= ((TextBox)e.Item.Cells[1].Controls[1]).Text;
//string LastName = ((TextBox)e.Item.Cells[2].Controls[1]).Text; SqlConnection connUpdate = new SqlConnection(strCnn);
connUpdate.Open();
String sql_edit = "UPDATE bslb " +
"SET LBMC = '" + stringlb.Replace("'","''")+ "'" +
" WHERE id = " + e.Item.Cells[0].Text; SqlCommand sqlCommandUpdate = new SqlCommand(sql_edit,connUpdate);
sqlCommandUpdate.ExecuteNonQuery();
connUpdate.Close(); sql = "Select * FROM bslb";
People.EditItemIndex = -1;
People.DataSource = CreateDataSource();
People.DataBind(); } public void People_Delete(object sender, DataGridCommandEventArgs e)
{ SqlConnection connDel = new SqlConnection(strCnn);
connDel.Open();
String sql_Del = "DELETE FROM bslb " +
" WHERE id = " + e.Item.Cells[0].Text; SqlCommand sqlCommandDel = new SqlCommand(sql_Del,connDel);
sqlCommandDel.ExecuteNonQuery();
connDel.Close(); sql = "Select * FROM bslb";
People.EditItemIndex = -1;
People.DataSource = CreateDataSource();
People.DataBind(); //第134行 }
System.Web.HttpException: 无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。
报错行134行代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.IO;
using System.Data.SqlClient;
using System.Configuration;namespace JianShen.Admin
{
/// <summary>
/// BslbList 的摘要说明。
/// </summary>
public class BslbList : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox cls_name;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private string sql;
protected System.Web.UI.WebControls.DataGrid People;
private string strCnn;
private void Page_Load(object sender, System.EventArgs e)
{ strCnn = ConfigurationSettings.AppSettings["strConnection"].ToString();
if (!IsPostBack)
{
sql = "Select * FROM bslb";
People.DataSource = CreateDataSource();
People.DataBind();
} }
public ICollection CreateDataSource ()
{
SqlConnection conn = new SqlConnection(strCnn); SqlDataAdapter db_sqladaptor = new SqlDataAdapter(sql,conn); DataSet ds = new DataSet();
db_sqladaptor.Fill(ds,"MyDataResult"); DataView myView = ds.Tables["MyDataResult"].DefaultView;
return myView;
} public void Page_Grid(object sender, DataGridPageChangedEventArgs e)
{
sql = "Select * FROM bslb";
// Set CurrentPageIndex to the page the user clicked.
People.CurrentPageIndex = e.NewPageIndex; // Rebind the data.
People.DataSource = CreateDataSource();
People.DataBind(); } public void People_Edit(object sender, DataGridCommandEventArgs e)
{
sql = "Select * FROM bslb"; People.EditItemIndex = e.Item.ItemIndex;
People.DataSource = CreateDataSource();
People.DataBind(); }
public void People_Cancel(object sender, DataGridCommandEventArgs e)
{
sql = "Select * FROM bslb";
People.EditItemIndex = -1;
People.DataSource = CreateDataSource();
People.DataBind(); } public void People_Update(object sender, DataGridCommandEventArgs e)
{
string stringlb= ((TextBox)e.Item.Cells[1].Controls[1]).Text;
//string LastName = ((TextBox)e.Item.Cells[2].Controls[1]).Text; SqlConnection connUpdate = new SqlConnection(strCnn);
connUpdate.Open();
String sql_edit = "UPDATE bslb " +
"SET LBMC = '" + stringlb.Replace("'","''")+ "'" +
" WHERE id = " + e.Item.Cells[0].Text; SqlCommand sqlCommandUpdate = new SqlCommand(sql_edit,connUpdate);
sqlCommandUpdate.ExecuteNonQuery();
connUpdate.Close(); sql = "Select * FROM bslb";
People.EditItemIndex = -1;
People.DataSource = CreateDataSource();
People.DataBind(); } public void People_Delete(object sender, DataGridCommandEventArgs e)
{ SqlConnection connDel = new SqlConnection(strCnn);
connDel.Open();
String sql_Del = "DELETE FROM bslb " +
" WHERE id = " + e.Item.Cells[0].Text; SqlCommand sqlCommandDel = new SqlCommand(sql_Del,connDel);
sqlCommandDel.ExecuteNonQuery();
connDel.Close(); sql = "Select * FROM bslb";
People.EditItemIndex = -1;
People.DataSource = CreateDataSource();
People.DataBind(); //第134行 }
解决方案 »
- 关于session 应用的示例代码
- c#网站项目调试状态下成功发布提示【未将对象引用设置到对象的实例】
- 3个小小小问题。请指点。谢谢。100%速结。
- 请教一个xml的问题
- 奇怪我的电脑出现这样的问题怎么解决呀?
- asp.net+VS怎么显示用xslt转换的HTML?
- 求助:遇到超烦的“超时“问题 超时以后为什么不自动跳转到登陆页面,而是显示 “the page cannot be displayed ....”
- timer失灵了!50分求救:)
- >>>>>>如何根据ID获得控件??
- 关于网站开发项目的管理以及开发问题
- 各位师兄,我发现有人登陆我写的这个网站后台乱加东西,并修改主页大家能不能帮我测试下有哪些漏洞要堵一堵的!
- 大侠们,一个配置文件的小小问题,谢谢
try
BindDataGrid()
catch
Mydatagrid.CurrentpageIndex=MyDataGrid.pagecount-1
BindDataGrid()
end try
int CurrentPage = 0;
if(this.DataGrid1.CurrentPageIndex == this.DataGrid1.PageCount -1)
{
if (this.DataGrid1.CurrentPageIndex == 0)
{
this.DataGrid1.CurrentPageIndex = this.DataGrid1.PageCount -1;
}
else
{
if (this.DataGrid1.Items.Count % this.DataGrid1.PageSize == 1)
{
CurrentPage = 2;
}
else
{
CurrentPage = 1;
}
this.DataGrid1.CurrentPageIndex = this.DataGrid1.PageCount - CurrentPage;
}
}
try
{
this.DataGrid1.DataBind();
}
catch
{
if(this.DataGrid1.CurrentPageIndex>0)
{
this.DataGrid1.CurrentPageIndex--;
}
this.DataGrid1.DataBind();
}
*/
#endregion
if (!IsPostBack)
{
sql = "Select * FROM bslb";
People.DataSource = CreateDataSource();
try
{
People.DataBind();
}
catch
{
People.CurrentPageIndex=this.People.PageCount-1;
People.DataBind();
} }
就可以了
删除最后一条的时候 把当前页改为第一页
if (DataCount==0)
DataGrid1.CurrentPageIndex=0;
else
{
int l=DataCount % DataGrid1.PageSize ;
if(l==0)
{
if(flag1 == "1")
{
}
else
{
DataGrid1.CurrentPageIndex=DataGrid1.PageCount-2;
}
}
}
试试这个吧
if(DataGrid1.PageCount > 1 && DataGrid1.Items.Count ==1)
DataGrid.CurrentPageIndex -= 1;//你的绑定代码
//--paging
int pagesum;
int rowcount=dv.Count;
int pagesize=this.DataGrid1.PageSize;
if(rowcount % pagesize == 0)
{
pagesum =rowcount/pagesize ; //divide exactly
}
else
{
pagesum =rowcount /pagesize+1; //not divide exactly
}
if(rowcount == 0)
{
pagesum = 1; //initial paging
}
if(this.DataGrid1.CurrentPageIndex >= pagesum)
{
this.DataGrid1.CurrentPageIndex = pagesum - 1;
}
//--end pagingthis.DataGrid1.DataSource=dv;
this.DataGrid1.DataBind();