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