早教吧 育儿知识 作业答案 考试题库 百科 知识分享

编辑事件---取ID值时,出现如下错误,“/HotelManagerWeb”应用程序中的服务器错误.--------------------------------------------------------------------------------索引超出范围.必须为非负值并小于集合大小.参数

题目详情
编辑事件---取ID值时,出现如下错误,
“/HotelManager_Web”应用程序中的服务器错误.
--------------------------------------------------------------------------------
索引超出范围.必须为非负值并小于集合大小.
参数名:index
说明:执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息.
异常详细信息:System.ArgumentOutOfRangeException:索引超出范围.必须为非负值并小于集合大小.
参数名:index
源错误:
行 28:protected void GridView1_RowEditing(object sender,GridViewEditEventArgs e)
行 29:{
行 30:int id = Convert.ToInt32(GridView1.DataKeys[e.NewEditIndex].Value.ToString());
行 31:Response.Redirect("UpdataRoomType?typeId" + id);
行 32:}
源文件:e:\Visual Studio 2008\Projects\HotelManager_Web\SelectRoomType.aspx.cs 行:30
▼优质解答
答案和解析
代码中有没有对 info 的元素进行扩充啊,从你提供的代码来看,info的元素是0个,当然不能该问了.
类中应该提供扩充 info 元素的方法.
这样改一下试试
public BlockInfo this[int index]//索引器,根据下标,返回一个BlockInfo
{
get
{
if (index < 0 || index >= info.Count)
{
throw new Exception("下标越界或不存在该元素");
}
else
{
return (BlockInfo)info[index];
}
}
}
///////你咋就不明白呢,你都不向 info 中添加元素,当然报错啦,试着加一个这个方法
public void AddBlock(BlockInfo b)
{
info.Add(b);
_length = info.Count;
}
然后在使用索引器之前选调用AddBlock 方法向里面添加元素,如:
InfoArr i=new InfoArr();
i.AddBlock(new BlockInfo()); //添加一个元素
BlockInfo b=i[0]; //访问其中的第一个元素