0

我在一个名为 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);
}

当它运行时,我会因为标签而NullReferenceException上线。addGiftCards+=在我输入时的即时窗口中:

(DataList)Page.FindControl("ShippingOrders1").FindControl("dlGiftCodeAmount").Items

它向我展示了我希望看到的所有内容,但是当我键入时dli它返回DataItemas null。我在另一个页面上循环浏览这个完全相同的数据列表,它没有给我带来任何问题。那么谁能告诉我我做错了什么以及我能做些什么来解决这个问题?

任何额外的代码需要我都会更新解决方案。

4

1 回答 1

0

DataItem 仅在初始页面加载时可用;之后,数据通过 viewstate 保存,DataItem 不可用。它仅在重新绑定时再次可用。此外,Items 还可能包含您可能拥有的任何页眉或页脚,因此 FindControl 不会在不同的模板中找到控件。

于 2014-08-21T16:42:17.180 回答