如何在转发器中访问动态创建的项目?

时间:2012-03-12 15:21:59

标签: asp.net repeater

我有一个转发器:

<asp:repeater id="someID" runat="server">
   <ItemTemplate>
      <asp:hyperlink id=<%# Eval("ID")%> runat="server"></asp:hyperlink>
   </ItemTemplate>
</asp:repeater>

我需要引用每个超链接并访问它的属性。

在ItemDataBound上,如何继续访问ID刚刚设置的超链接?如果我有超链接的固定ID,那不会有问题。但是因为我需要动态分配ID,所以我找不到方法迷失了......

1 个答案:

答案 0 :(得分:1)

如果您需要访问每个项目,那么您必须订阅OnItemDataBound事件然后找到控件

    private void rptMyTest_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
        {
            Control control = e.Item.FindControl("ID_OF_YOUR_CONTROL") as Control;
            if (control != null)
            {
                var dataItem = e.Item.DataItem as MYITEMTYPE;
                if (DateTime.Now > dataItem.DateYouNeedToCheck)
                    control.ToolTip = "from the past";

              //ALL THE MAGIC HAPPENS HERE
            }
        }
    }

希望它有所帮助。

刚添加 只是再次阅读你的帖子。

内部重复器元素的ID将自动设置为每个项目,但您需要将其预先设置为某个静态值(以便获取对它的引用)。

如果您尝试使用JQuery(或javascript)访问它,我建议不要使用硬编码ID - 有不同的方法来做这样的事情。

如果您再解释一下您想要达到的目标,那么回答您的问题或提出建议会更容易。

<强>更新 检查上面的代码示例