У меня есть повторитель, который зацикливает пользовательский элемент управления, например:
<asp:Repeater ID="repItems" runat="server" EnableViewState="false"
OnItemCommand="repItems_ItemCommand">
<ItemTemplate>
<dmg:confirmItem runat="server"
OnDataBinding="confirmitemItem_DataBinding"
Basket="<%# Container.DataItem %>" />
</ItemTemplate>
</asp:Repeater>
Мой код выглядит следующим образом:
public void BindItems(List<ShopBasket> baskets)
{
_baskets = baskets;
repItems.DataSource = baskets;
repItems.DataBind();
}
Мой пользовательский элемент управления выглядит следующим образом:
public ShopBasket Basket;
protected void Page_Load(object sender, EventArgs e)
{
imgItem.ImageUrl = ShopImagePath + Basket.ImageFilename;
...etc...
}
В первый раз все работает блестяще, предметы корзины привязаны к объектам Корзины, и все замечательно.
Однако, когда я получаю ItemCommand от моего повторителя и обновляю содержимое корзины (Примечание: здесь не добавляются и не удаляются, просто обновляется количество), я перепривязываю, чтобы увидеть последние значения, и BOOM! Нулевая ссылка - нет объекта Basket в пользовательском элементе управления Page_Load. И это несмотря на то, что вы проследили, что метод BindItems () вызывается как обычно, и корзины есть.
Полагаю, это как-то связано с жизненным циклом, но оно меня побеждает.
Есть идеи?
Спасибо
Дункан