0

我创建了一个带有 ASP 中继器的 ASP.net 网页。我将 ASP 中继器与IOrderedEnumerable<int>数据源绑定。

我需要访问 Page_Load 事件处理程序内部的 Repeater DataItems。但是,当我尝试获取 的值时repeater.Items[x].DataItem,我总是得到空值。这里应该总是有一个整数值。

尽管如此,该页面在其他方面呈现良好。为什么我不能DataItem在 Page_Load 事件处理程序中访问我的 RepeaterItems 的属性?

4

4 回答 4

2

Repeater直到页面生命周期的后期才进行数据绑定。如果要Repeater.Items[i].DataItemPage.Load处理程序中引用,请尝试提前绑定第Repeater一个:

repeater.DataBind()
于 2011-08-23T18:17:29.197 回答
0

数据项仅在数据绑定过程发生后才存在。在转发器中跨回发保留的唯一内容是在视图状态中序列化的控件属性。如果您需要这些项目中的数据,您可以像之前所说的伪编码器和数据绑定那样做,或者如果这不可能,您可以编写一个实用函数,该函数接受转发器数据项并从转发器中的控件中提取它(假设您存储了所有您在这些控件中需要的信息)

于 2011-08-23T18:24:55.310 回答
0

它仅在数据绑定期间可用。

于 2011-08-23T18:18:23.323 回答
0

正如其他人所说,它仅在数据绑定期间可用。您需要连接中继器的 OnItemDataBound 事件。在其事件处理程序中,您可以这样做:

protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    switch (e.Item.ItemType)
    {
        case ListItemType.Item:
        case ListItemType.AlternatingItem:
            WhateverType Item = e.Item.DataItem as WhateverType;
            break;
    }
}
于 2011-08-23T18:22:33.767 回答