【发布时间】:2010-10-29 18:01:23
【问题描述】:
我有一个循环用户控件的中继器,如下所示:
<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!空引用 - 用户控件 Page_Load 中没有 Basket 对象。尽管通过跟踪可以看到 BindItems() 方法像往常一样被调用,并且篮子在那里。
我认为这与生命周期有关,但它让我打败了。
有什么想法吗?
谢谢 邓肯
【问题讨论】: