索引超出范围。必须为非负值并小于集合大小。救命啊,在线等

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

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

源错误:


行 52:
行 53:
行 54: int Did = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex]);
行 55:
行 56: // Label5.Text = "删除成功";


代码:
protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e)
{
// Read in the ProductID from the DataKeys collection


int Did = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex]);

// Label5.Text = "删除成功";

SqlConnection conn2;
SqlCommand cmd2;
int RecordsAffected;
string cmdString2 = @"DELETE liuyanhuifu WHERE id=Did";
conn2 = new SqlConnection(@"Data Source=localhost;Initial Catalog=schoolhoom;Integrated Security=True;Pooling=False");
cmd2 = new SqlCommand(cmdString2, conn2);
conn2.Open();

RecordsAffected = cmd2.ExecuteNonQuery();
conn2.Close();
DataList2.DataBind();
// return RecordsAffected;

}
求高手怎样解决,在线等
...全文
208 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxj0115 2011-12-27
  • 打赏
  • 举报
回复
DataListCommandEventArgs e

这个里面应该不是用的e.Item.ItemIndex
hufenglongyy 2011-12-27
  • 打赏
  • 举报
回复
前台
<asp:DataList ID="DataList1" runat="server" ondeletecommand="DataList1_DeleteCommand">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="del" CommandArgument='<%#Eval("id") %>'>LinkButton</asp:LinkButton>
</ItemTemplate>
</asp:DataList>

后台
[code=C#]
protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e)
{
string command = e.CommandName;
string id = e.CommandArgument.ToString();
if ("del".Equals(command))
{
//删除操作
}
}
hufenglongyy 2011-12-27
  • 打赏
  • 举报
回复
前台
<asp:DataList ID="DataList1" runat="server" ondeletecommand="DataList1_DeleteCommand">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="del" CommandArgument='<%#Eval("id") %>'>LinkButton</asp:LinkButton>
</ItemTemplate>
</asp:DataList>

后台

protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e)
{
string command = e.CommandName;
string id = e.CommandArgument.ToString();
if ("del".Equals(command))
{
//删除操作
}
}
netstudy0105 2011-12-27
  • 打赏
  • 举报
回复
问题是怎么改,我要删除datalist中得一条信息,
int Did = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex]);
是想获取这条信息的主键,这样写不对的话,给个正确的,谢谢
dalmeeme 2011-12-27
  • 打赏
  • 举报
回复
e.Item.ItemIndex超过可取范围了,你检查下。

设个断点调试一下,跟踪看看该变量值的变化。
accomp 2011-12-27
  • 打赏
  • 举报
回复
debug
e.Item.ItemIndex 是多少
DataList1.DataKeys[e.Item.ItemIndex] 存在么
错误信息很明确阿
accomp 2011-12-27
  • 打赏
  • 举报
回复
debug
e.Item.ItemIndex 是多少
DataList1.DataKeys[e.Item.ItemIndex] 存在么
错误信息很明确阿

62,025

社区成员

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

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

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

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