索引

yantaizhifuqishanlu 2008-05-05 01:25:18
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Del")
{
int iIndex = Convert.ToInt32(e.CommandArgument);
string sUserID = GridView1.DataKeys[iIndex].Value.ToString();
SqlConnection con = new SqlConnection("server=.;database=Forum;uid=sa");
SqlCommand cmd = new SqlCommand("delete from tbUser where UserID=@UserID");
con.Open();
cmd.Parameters.AddWithValue("@UserID", sUserID);
Response.Write(string.Format("<script>alert('删除了{0}条记录')</script>", cmd.ExecuteNonQuery()));
bind();
}
}
报错:
索引超出范围。必须为非负值并小于集合大小。
参数名: index 请高手看下
...全文
104 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
sz_free_bird 2008-05-05
  • 打赏
  • 举报
回复
给你个建议吧:
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server"
CommandArgument='<%# Eval("CasestId") %>' CommandName="Del" Text="Button" />
</ItemTemplate>
</asp:TemplateField>
这样直接绑定表的ID就不用脱了裤子放屁。
虚心点。
下次不会再回你的贴。
caicai_45 2008-05-05
  • 打赏
  • 举报
回复
to:sz_free_bird

走吧,你的经验不需要他来证明,他的贬低也不能降低你一分。

独生子女,以自我为中心。。
当你明白 地球不是为你而转的时候,你才能真正的长大。
  • 打赏
  • 举报
回复
我错了行吧,麻烦你了
  • 打赏
  • 举报
回复
哥们,你直接绑主建看能达到效果吗,这个可不是就一个按纽啊,GRIDVIEW是表的形式
sz_free_bird 2008-05-05
  • 打赏
  • 举报
回复
确实有点不知好歹。我是忍着气打字。
  • 打赏
  • 举报
回复
to caicai_45
任何给意见了人我都表示感谢,除了啥都不懂还说别人脱了裤子放屁的,
int iIndex = Convert.ToInt32(e.CommandArgument);得的只是行索引,要通过它才能得主建,你回家慢慢笑吧



sz_free_bird 2008-05-05
  • 打赏
  • 举报
回复
你不会把CommandArgument改成绑定数据库表中的ID么?
caicai_45 2008-05-05
  • 打赏
  • 举报
回复
哈哈,我先笑一个。。。
to:sz_free_bird 太有耐心。


to:yantaizhifuqishanlu

没有任何人有任何的责任去给你解决问题。
大家都是帮忙的,因为也是别人帮忙走到这一步的。
所以不管说话还是问问题的口气,都要客气点。。。。

你的自己代码写错,还在埋怨别人。 你已经取到主键,还把主键放到集合中去做索引,脱了裤子放屁。。。

取到的已经主键了。。就可以当sUserID 来用了。

在给你个建议,你的代码风格不好,.NET是采用Pascal命名规则的,没有必要在第一个字母上说明这个变量的类型。。
  • 打赏
  • 举报
回复
服了~
  • 打赏
  • 举报
回复
你拖一个GridView绑定张表,里面再放一个删除按纽
不用绑定e.CommandArgument!!!
事件里
if (e.CommandName == "Del")
{
int iIndex = Convert.ToInt32(e.CommandArgument);
Response.write(string.Format("删除的是第{0}行",iIndex+1));
}
你看能不能显示
sz_free_bird 2008-05-05
  • 打赏
  • 举报
回复
你既然绑定的是数据库的主键
还要string sUserID = GridView1.DataKeys[iIndex].Value.ToString(); 这行代码做啥?
sz_free_bird 2008-05-05
  • 打赏
  • 举报
回复
e.CommandArgument,不用自己绑定?第一次听说。
  • 打赏
  • 举报
回复
gridviwe里e.CommandArgument不用自己绑定,本身就绑定了所选行的索引,汗~我想做的当然是根据行索引查出主键,再根据主键删除记录,代码里很明白,再汗~
sz_free_bird 2008-05-05
  • 打赏
  • 举报
回复
你还不耐烦了?就贴上上面几行代码。鬼知道你想做什么?
  • 打赏
  • 举报
回复
说了那么多,没有解决办法有啥用
sz_free_bird 2008-05-05
  • 打赏
  • 举报
回复
关键我不知道你想要做什么,不知道给你什么建议。
e.CommandArgument绑定是ID值么?
  • 打赏
  • 举报
回复
有解决办法么
sz_free_bird 2008-05-05
  • 打赏
  • 举报
回复
假设iIndex的值是2,而DataKeys.Count的值为1.你说会不会报错呢?
  • 打赏
  • 举报
回复
e.CommandArgument就是所选删除行的索引,这个应该没问题吧
  • 打赏
  • 举报
回复
如果单纯int iIndex = Convert.ToInt32(e.CommandArgument); 这就话的话iIndex根据e.CommandArgument正常显示,但是加上 string sUserID = GridView1.DataKeys[iIndex].Value.ToString(); 报错后调试iIndex就为0了,不管e.CommandArgument是几,也不知道怎么回事
加载更多回复(2)

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧