C# "索引超出范围。必须为非负值并小于集合大小"

为什么在这句“stringsqlstr="deletefromxkjstjwhereid='"+GridView1.DataKeys[i].Value+"'";”中会提示... 为什么在这句“string sqlstr = "delete from xkjstj where id='" + GridView1.DataKeys[i].Value + "'";”中会提示“索引超出范围。必须为非负值并小于集合大小”。
有点看不明白是什么意思“GridView1.DataKeys有1个,你i>0了,就不行。
GridView1.DataKeys有2个,你i>1了,就不行。
GridView1.DataKeys有3个,你i>2了,就不行。”拜托能说得详细点吗?
展开
 我来答
百度网友e7215cf25
推荐于2018-03-30 · TA获得超过234个赞
知道小有建树答主
回答量:404
采纳率:0%
帮助的人:375万
展开全部
索引。是从0开始的。GridView1.DataKeys[0]代表第一个数据GridView1.DataKeys[GridView1.DataKeys.count -1]代表最后一个数据。当然GridView1.DataKeys.count -1要大于0
sniper2003
2009-10-12 · TA获得超过1882个赞
知道小有建树答主
回答量:775
采纳率:100%
帮助的人:660万
展开全部
首先看看你的i的值是多少?

GridView1.DataKeys是一个集合对象,不会为null,只是里面没有数据。当没有数据时,Count就为0。如果这时使用GridView1.DataKeys[i].Value取值将会出现这个提示。

尝试换一种方式去取值吧。我都没有怎么用过DataKeys属性

补充:最简单的说,你的DataKeys属性中没有指定数量的元素。例如你集合中有1个元素,当你用下标1取就会出这个错误。因为集合中第一个元素的下标是0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
九冠076
2009-10-12 · TA获得超过995个赞
知道小有建树答主
回答量:669
采纳率:0%
帮助的人:622万
展开全部
比如
你的GridView1.DataKeys有1个,你i>0了,就不行。
你的GridView1.DataKeys有2个,你i>1了,就不行。
你的GridView1.DataKeys有3个,你i>2了,就不行。

-----------------------------------------
这个i应该是行索引。。比如GrieView1有5行,你的i只能是0到4,你肯定是超出这个范围了,才报错的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
crasysanta
2009-10-12 · 超过17用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:0
展开全部
DataKeys[i]中的i超过了范围
可能的原因是Gridview1的Datakeys没有值,为null,建议你跟踪i,单步执行下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bb2ba868f
2009-10-12 · TA获得超过863个赞
知道小有建树答主
回答量:330
采纳率:0%
帮助的人:308万
展开全部
取当前行的关键字是这样的:
string str_1 = GridView2.DataKeys[e.RowIndex].Values[0].ToString();
用之前还要设置:
GridView主键的设置:
GridView1.DataKeyNames = new string[] { "Jinchu_Time" };
GridView1.DataBind();
去其当前编辑行的第三个单元格的值是这样的:
string str_2 = ((TextBox)(GridView2.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();//取得文本框中输入的内容
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式