我在ascx页面上有一个名为shippingorders1
的数据表,我正在尝试访问名为lblGiftCodeAmount
的标签。我试图循环通过datalist并检索标签的文本将其转换为十进制并总结它。在我的主页面的点击事件中,我有以下内容:
decimal addGiftCards = 0.0M;
foreach(DataListItem dli in (DataList)Page.FindControl("ShippingOrders1").FindControl("dlGiftCodeAmount").Items)
{
addGiftCards += Convert.ToDecimal(((Label)dli.FindControl("lblGiftCodeAmount")).Text);
}
运行时,由于标签,我在NullReferenceException
行上获得了addGiftCards+=
。
在我输入的立即窗口中:
(DataList)Page.FindControl("ShippingOrders1").FindControl("dlGiftCodeAmount").Items
它向我展示了我希望看到的所有内容,但当我输入dli
时,它会将DataItem
作为null
返回。我在另一个页面上遍历这个完全相同的datalist,它没有给我任何问题。那么有谁能告诉我我做错了什么以及我能做些什么来解决这个问题呢?
我需要更新解决方案。
答案 0 :(得分:0)
DataItem仅在初始页面加载时可用;之后,数据通过viewstate保存,DataItem不可用。它只能在重新绑定时再次使用。此外,Items也可能包含您可能拥有的任何页眉或页脚,因此FindControl不会在其他模板中找到控件。