如何访问中继器中动态创建的项目



我有一个中继器:

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

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

在ItemDataBound上,如何继续访问ID刚刚设置的超链接?如果我有一个固定的超链接ID,那就不会有问题。但由于我也需要动态分配ID,我有点迷失了方向。。

如果你需要访问每个项目,那么你必须订阅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——有不同的方法可以做到这一点。

如果你多解释一下你正在努力实现的目标,那么回答你的问题或提出一些建议会容易得多。

更新检查上的代码示例

最新更新