如何在转发器内获取Label不在itemdatabound

时间:2017-08-21 12:07:10

标签: c# asp.net repeater

我正在尝试在“for”循环中在转发器中获取标签,但我一直收到错误说:

  

“mscorlib.dll中发生了'System.ArgumentOutOfRangeException'类型的异常,但未在用户代码中处理

     

其他信息:指数超出范围。必须是非负面的   并且小于集合的大小。“

这是我的代码:

for (var i = 0; i < dt.Rows.Count; i++)
{
    Label AppAmmount = (Label)rpOffers.Items[i].FindControl("AppAmmount");
}

2 个答案:

答案 0 :(得分:2)

您正在循环dt.Rows.Count,但您正在访问rpOffers.Items。似乎DataTable包含的行多于转发器。

但为什么不是一个简单的foreach

foreach(RepeaterItem item in rpOffers.Items)
{
    Label AppAmmount = (Label)item.FindControl("AppAmmount");
}

答案 1 :(得分:1)

您可以使用rpOffers.Items.Count代替dt.Rows.Count

for (var i = 0; i < rpOffers.Items.Count; i++)
{
    Label AppAmmount = (Label)rpOffers.Items[i].FindControl("AppAmmount");
}