错误:索引超出范围。必须为非负值并小于集合大小。参数名: index
来源:互联网 发布:淘宝客qq群怎么拉人 编辑:程序博客网 时间:2024/05/17 22:38
运行后出现错误:索引超出范围。必须为非负值并小于集合大小。参数名: index 。
问题出现在:没有设置DATAKEYFIELD设为数据库中的pro_id_n,
因为在引用this.dgProduct.DataKeys[e.Item.ItemIndex].ToString();之前要为DATAKEYS填充数据源,既数据库中的ID字段
摘自:http://www.cnblogs.com/torome/archive/2005/12/29/307801.html
............................................................................................................................................................
另:
如果在运行时出现“索引超出范围。必须为非负值并小于集合大小。参数名:index”,则看一下datalist或gridview属性中是否有“ DataKeyField="ID"”,若没有,添加即可。
索引超出范围。必须为非负值并小于集合大小。参数名: index 解决方法收藏
症状:
string c_id=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
为什么这句话有时候运行正确 有时候报错
“索引超出范围。必须为非负值并小于集合大小。参数名: index”
ASP.NET 1.1/2.0 C#
这个错误应该是e.Item.ItemIndex这个参数有问题
于是我Response.Write(e.Item.ItemIndex);
结果输出 1 没有问题啊
更奇怪的是我又执行一句
this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
然后在执行
string c_id=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
然后一切正常 没有报错
解决方法:
不管是DataGrid还是GridView 在控件的属性窗口(其实就是aspx文件中控件属性)中直接给DataKeyField(DataKeyName)赋值后,问题即可解决.
............................................................................................................................................................
GridView删除数据时索引超出范围的解决方法
今天用GridView删除数据时,总是提示
索引超出范围。必须为非负值并小于集合大小。
参数名: index
说明:执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index
索引超出范围。必须为非负值并小于集合大小。
参数名: index
说明:执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index
上网查了下解决方法,发现网上下面的答到了重点:
GridView1.DataSource = myds;
GridView1.DataKeyNames = new string[] { "id" };//主键
GridView1.DataBind();
sqlcon.Close();
然后写SQL语句:select 字段A,字段B where id=‘"+ GridView1.DataKeys[e.RowIndex].Value.ToString() + "‘";
而我的错误原因就是因为我没有设置主键,也就是DataKeyNames
附上我的详细代码,请自己参考下面的主要代码
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
OleDbConnection conn = Createcon();
conn.Open();
OleDbCommand cmd = new OleDbCommand("select * from adimn", conn);
OleDbDataReader dr = cmd.ExecuteReader();
this.GridView1.DataSource = dr;
this.GridView1.DataKeyNames = new string[] { "id"} ;
this.GridView1.DataBind();
dr.Dispose();
conn.Close();
}
//数据库连接
protected OleDbConnection Createcon()
{
return new OleDbConnection("Provider = Microsoft.JET.OleDB.4.0;Data Source = |DataDirectory|admin.mdb");
}
//删除数据
protected void GridView_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
OleDbConnection conn = Createcon();
conn.Open();
OleDbCommand cmd = new OleDbCommand("Delete from adimn where id = " + GridView1.DataKeys[e.RowIndex].Value, conn);
cmd.ExecuteNonQuery();
cmd.CommandText = "select * from adimn";
OleDbDataReader dr = cmd.ExecuteReader();
this.GridView1.DataSource = dr;
this.GridView1.DataBind();
dr.Dispose();
conn.Close();
}
}
- 错误:索引超出范围。必须为非负值并小于集合大小。参数名: index
- 索引超出范围。必须为非负值并小于集合大小。参数名: index 解决方法
- “索引超出范围。必须为非负值并小于集合大小。参数名: index ”怎么解决?
- 索引超出范围。必须为非负值并小于集合大小。 参数名: index
- C#.NET 中使用gridview删除列出现“索引超出范围。必须为非负值并小于集合大小。参数名: index”
- 索引超出范围。必须为非负值并小于集合大小。
- datagrid/gridview索引超出范围。必须为非负值并小于集合大小。
- 索引超出范围。必须为非负值并小于集合大小。(转)
- 索引值超出范围,必须为非负值并小于集合大小
- 索引超出范围。必须为非负值并小于集合大小
- 解决:索引超出范围。必须为非负值并小于集合大小。
- 【转载】asp.net中GridView索引超出范围。必须为非负值并小于集合大小
- gridview索引超出范围。必须为非负值并小于集合大小
- 【YMGJ 3】APP--索引超出范围,必须为非负值并小于集合大小
- TMD,搞了半天,GridView更新时,提示“索引超出范围。必须为非负值并小于集合大小”
- ASP.net 异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。解决方法
- GridView1.DataKeys[e.RowIndex].Value.ToString() 必须为非负值并小于集合大小 参数名:index
- GridView1.DataKeys[e.RowIndex].Value.ToString() 必须为非负值并小于集合大小 参数名:index
- Linux 核心编译与管理
- 【QTP】获取WinListView表中所有信息
- yoga in america douglas dupler
- 笔记
- 【时尚名人】著名歌手马宁介绍
- 错误:索引超出范围。必须为非负值并小于集合大小。参数名: index
- kmalloc/vmalloc获取memory的对齐方式
- ARM 思考题
- Android 基本空间划分
- dtree的使用
- Gentoo Linux下安装NVIDIA显卡驱动(NVIDIA installer can't find kernel source/build files)
- Analysis Services是什么?
- test
- 不错的blog收集