【发布时间】:2014-08-21 16:31:56
【问题描述】:
我在 ascx 页面上有一个名为 shippingorders1 的数据列表,我正在尝试访问名为 lblGiftCodeAmount 的标签。我正在尝试遍历数据列表并检索标签的文本,将其转换为十进制并求和。在我的主页的点击事件中,我有以下内容:
decimal addGiftCards = 0.0M;
foreach(DataListItem dli in (DataList)Page.FindControl("ShippingOrders1").FindControl("dlGiftCodeAmount").Items)
{
addGiftCards += Convert.ToDecimal(((Label)dli.FindControl("lblGiftCodeAmount")).Text);
}
当它运行时,由于标签,我在 addGiftCards+= 线上得到一个 NullReferenceException。
在我输入时的即时窗口中:
(DataList)Page.FindControl("ShippingOrders1").FindControl("dlGiftCodeAmount").Items
它显示了我希望看到的所有内容,但是当我输入 dli 时,它会将 DataItem 返回为 null。我在另一个页面上循环浏览这个完全相同的数据列表,它没有给我带来任何问题。那么谁能告诉我我做错了什么以及我可以做些什么来解决这个问题?
任何额外的代码需要我会更新解决方案。
【问题讨论】:
-
您没有在循环中的任何地方使用 Loop Var (dli)?还有什么(Shippingorders1)?
-
@wizpert 感谢您的发现,我尝试了其他方法,但在复制代码之前忘记将其切换回来。以上代码已更新
标签: c# asp.net datalist findcontrol datalistitem