Перебор списка данных на другой странице

У меня есть список данных на странице 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, он возвращает DataItem как null. Я прокручиваю этот же самый список данных на другой странице, и это не доставляет мне проблем. Так может ли кто-нибудь сказать мне, что я делаю неправильно, и что я могу сделать, чтобы обойти эту проблему?

Если потребуется дополнительный код, я обновлю решение.


person Joe W    schedule 21.08.2014    source источник
comment
вы не используете Loop Var (dli) где-либо в цикле? и что (заказы на доставку1)?   -  person Adam    schedule 21.08.2014
comment
@wizpert спасибо за уловку, я пробовал что-то еще и забыл переключить его обратно, прежде чем копировать свой код. Код выше обновлен   -  person Joe W    schedule 21.08.2014


Ответы (1)


DataItem доступен только при начальной загрузке страницы; после этого данные сохраняются через состояние просмотра, а DataItem недоступен. Он снова доступен только при перепривязке. Кроме того, элементы также могут содержать любой верхний или нижний колонтитул, который может быть у вас, поэтому FindControl не найдет элемент управления в другом шаблоне.

person Brian Mains    schedule 21.08.2014