索引超出范围。必须为非负值并小于集合大小。 参数名: index DataKeyNames删除就一个关键字

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

小白已解决

这是我的第一篇博客,不知道能写成什么鬼样子。
先说问题
索引超出范围。必须为非负值并小于集合大小。 参数名: index DataKeyNames删除就一个关键字_第1张图片
报这个错。
我先说我想干嘛。删除啊。找几个关键标识。之前看DataKeyNames就一个,不够用。想用数组。于是:

  GridView1.DataKeyNames = new string[] { "列名1", "列名2", "列名3" };

然后

DataKey key = GridView1.DataKeys[e.RowIndex];
        string 11111 = GridView1.DataKeys[e.RowIndex].Values[0].ToString();
        string 2222 = GridView1.DataKeys[e.RowIndex].Values[1].ToString();
        //这0.1.2是你新数组第几列(从0开始)可不是你绑定的数据第几列
        string 3333 = GridView1.DataKeys[e.RowIndex].Values[2].ToString();    

或者有这么写的::::

  GridView1.DataKeyNames = new string[] { "列名1", "列名2", "列名3" };

然后

DataKey key = GridView1.DataKeys[e.RowIndex];
        string 11111 = key[0].ToString();
        string 11111 = key[1].ToString();
        string 11111 = key[2].ToString();

到这应该能解决一部分问题了。。。。
代码应该没问题。。。要是还报这个错?
我查:

索引超出范围。必须为非负值并小于集合大小。 参数名: index DataKeyNames删除就一个关键字_第2张图片
runat= "server " 我也试了 不行。
查到:索引超出范围。必须为非负值并小于集合大小。 参数名: index DataKeyNames删除就一个关键字_第3张图片
我也不会判断啊。但是他说没有就是-1.
那我这个GridView1.DataKeyNames = new string[] { “列名1”, “列名2”, “列名3” };
是空?
我把这句代码换了个位置。。

  GridView1.DataKeyNames = new string[] { "列名1", "列名2", "列名3" };  

放到绑定这里了。就行了。。。

   public void GridViewBind()
   {

}

太细我也不懂啊。。。
参考https://zhidao.baidu.com/question/88518619.html
https://bbs.csdn.net/topics/300008894
https://zhidao.baidu.com/question/260743989.html

欢迎讨论。期待关注交流。

你可能感兴趣的:(.net)