CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

新手求救!谢谢了!索引超出范围。必须为非负值并小于集合大小。参数名: index

楼主hanjiaojie()2006-05-04 15:02:04 在 .NET技术 / C# 提问

刚刚学了两个月的.NET  
  在编一个DataGrid里的删除按钮的时候,编译时没有错误,浏览时按下“删除”出现以下错误:  
  索引超出范围。必须为非负值并小于集合大小。参数名:   index    
  说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。    
   
  异常详细信息:   System.ArgumentOutOfRangeException:   索引超出范围。必须为非负值并小于集合大小。参数名:   index  
   
  源错误:    
   
   
  行   74:   SqlCommand   delete   =   new   SqlCommand("delete   teacher   where   id=@id",cnt);  
  行   75:   delete.Parameters.Add("@id",System.Data.SqlDbType.Int,4);  
  行   76:   delete.Parameters["@id"].Value   =   (int)DataGrid1.DataKeys[(int)e.Item.ItemIndex];  
  行   77:   cnt.Open();  
  行   78:   delete.CommandType   =   CommandType.Text;  
     
   
  源文件:   d:\项目管理\admin\teacher_gl.aspx.cs         行:   76    
   
  源代码为:  
  private   void   DataGrid1_DeleteCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)  
  {  
  SqlConnection   cnt   =   new   SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);  
  SqlCommand   delete   =   new   SqlCommand("delete   teacher   where   id=@id",cnt);  
  delete.Parameters.Add("@id",System.Data.SqlDbType.Int,4);  
  delete.Parameters["@id"].Value   =   (int)DataGrid1.DataKeys[(int)e.Item.ItemIndex];  
  cnt.Open();  
  delete.CommandType   =   CommandType.Text;  
  delete.ExecuteNonQuery();  
  cnt.Close();  
  DataGrid1.EditItemIndex   =   -1;  
  //DataGrid1.DataBind();  
  DataBind();  
  }  
   
  请大家多多指教!  
  谢谢了! 问题点数:20、回复次数:6Top

1 楼sgd(阿司)回复于 2006-05-04 15:09:17 得分 0

DataGrid1.EditItemIndex   =   -1;   什么意思?把这个删除看看。Top

2 楼hanjiaojie()回复于 2006-05-04 16:27:42 得分 0

还是不对  
  错误变成了:  
   
  索引超出范围。必须为非负值并小于集合大小。参数名:   index    
  说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。    
   
  异常详细信息:   System.ArgumentOutOfRangeException:   索引超出范围。必须为非负值并小于集合大小。参数名:   index  
   
  源错误:    
   
   
  行   74:   SqlCommand   delete   =   new   SqlCommand("delete   teacher   where   id=@id",cnt);  
  行   75:   delete.Parameters.Add("@id",System.Data.SqlDbType.Int,4);  
  行   76:   delete.Parameters["@id"].Value   =   (int)DataGrid1.DataKeys[(int)e.Item.ItemIndex];  
  行   77:   cnt.Open();  
  行   78:   delete.CommandType   =   CommandType.Text;  
     
   
  源文件:   d:\项目管理\admin\teacher_gl.aspx.cs         行:   76    
  Top

3 楼hanjiaojie()回复于 2006-05-04 16:28:08 得分 0

谢谢了  
  Top

4 楼yistudio(阳光灿烂的日子)回复于 2006-05-04 16:37:05 得分 0

很明显得在DataKeys数组中e.Item.ItemIndex处没有值,检查一下吧Top

5 楼hanjiaojie()回复于 2006-05-04 16:54:09 得分 0

谢谢楼上  
   
  不过刚开始学  
  还是不太明白楼上的意思  
  不好意思  
  能不能说得详细一点哈Top

6 楼hanjiaojie()回复于 2006-05-04 17:23:55 得分 0

哥哥姐姐  
  我明白了……  
   
  谢谢了  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:hanjiaojie

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo