1
我有一个循环用户控件的转发器,如下所示:在ItemCommand之后ASP.NET Repeater不绑定
<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对象。尽管如此,仍然可以看到BintItems()方法像往常一样被调用,并且Baskets就在那里。
我认为这与生命周期有关,但它让我击败了。
任何想法?
谢谢 Duncan
感谢您回复我。我很难理解(也许因为它是7.15pm!),因为我没有看到我在做什么错。请记住,上面列出的Page_Load是在我的用户控件上的......所以应该从中继器的数据绑定到现在应该收到Basket?除非那是我出错的地方? – Duncan 2010-10-29 18:18:35
你什么时候再绑定?篮子不会在页面回传中持续存在,从我所看到的情况来看,重新链接需要在页面加载之前发生,这可能不是。 – 2010-10-29 19:24:55
我现在绑定在PageLoad上,就像http://weblogs.asp.net/infinitiesloop/archive/2006/10/16/TRULY-Understanding-Dynamic-Controls-_2800_Part-4_2900_.aspx告诉我要做的一样! – Duncan 2010-10-30 09:34:27