ASP.NET中继器在ItemCommand之后未绑定

ASP.NET中继器在ItemCommand之后未绑定,asp.net,repeater,Asp.net,Repeater,我有一个中继器正在循环用户控件,如下所示: <asp:Repeater ID="repItems" runat="server" EnableViewState="false" OnItemCommand="repItems_ItemCommand"> <ItemTemplate> <dmg:confirmItem runat="server"

我有一个中继器正在循环用户控件,如下所示:

                <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并更新篮子内容时(注意:此处不添加或删除,只更新数量),然后我重新绑定以查看最新的值,然后爆炸!空引用-加载时用户控件页中没有篮子对象。尽管进行了跟踪,以查看BindItems()方法像往常一样被调用,并且篮子就在那里

我想这与生命周期有关,但它让我感到不安

有什么想法吗

谢谢
邓肯(Duncan)

让一个公共字段存储要绑定的项目有点危险,尤其是当您有多个项目时。一种更安全的方法是提取绑定到repeater的篮子作为DataItem,并在repeater ItemCommand事件中以这种方式使用它。ItemDataBound会更安全,因为您知道这个篮子是存在的(因为它是数据绑定的),页面加载在这里不是一个安全的选项


HTH.

谢谢你回复我。我很难理解(可能是因为现在是晚上7点15分!),因为我看不出我所做的有什么不对。请记住,上面列出的页面加载在我的用户控件上。。。那么现在应该已经从中继器的数据绑定接收到篮了吗?除非那是我错的地方?你什么时候再绑?Basket不会在页面回发中持久化,而且据我所见,重新绑定需要在页面加载启动之前进行,这可能不是。我现在正在绑定页面加载,就像2800_Part-4_2900.aspx告诉我的那样!好吧,破解它。谢谢-我昨晚就是想不通。您是对的,它应该发生在中继器上的ItemDataBound中-然后我可以找到我的用户控件并将dataItem传递给它。如果有人觉得有用,我就写在这里了-