• [网络收集]索引超出范围。必须为非负值并小于集合大小,参数名: index。


    GridView更新时,提示“索引超出范围。必须为非负值并小于集合大小”

    把GridView的EnableViewState属性设置为true,这样就可以了,如果是false就不能保存其数据的状态。 

    索引超出范围。必须为非负值并小于集合大小。
    参数名: index

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
    参数名: index

    解决方法:1.gridview的datasource是否重新做了绑定 2.是否设定了datakeynames属性

    在gridview 执行编辑更新 和删除操作的时候

    GridView1.DataKeys[e.RowIndex].Value.ToString()   中的DataKeys要给他指定一个关键字

    在这个表中按stid删除和更新 ,就在属性里边加上 DataKeysNames="stid",好像还可以指定多个。利用GridView1.DataKeys[e.RowIndex].Values[n].ToString(),,来选择 第一个为0  

    索引超出范围。必须为非负值并小于集合大小。参数名: index
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: 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)赋值后,问题即可解决

  • 相关阅读:
    状压dp学习笔记
    dbcc log(转)
    日志分析 操作(转)
    Sql server 2005系统表详细说明
    c#读取并分析sqlServer据库日志(转)
    [POJ]1915 Knight Moves
    [JOY]1143 飘飘乎居士的约会
    [POJ]1164 The Castle
    win7注册ocx时出现对DllRegisterServer的调用失败,错误代码为0x80040200解决方案
    注册DLL、OCX的方法
  • 原文地址:https://www.cnblogs.com/lushuicongsheng/p/1890519.html
Copyright © 2020-2023  润新知