asp:HyperLink动态ID

时间:2010-07-22 08:16:51

标签: asp.net hyperlink

参考:Dynamic Control ID

有没有人有动态创建超链接ID属性的工作示例?

我有一个带有多个超链接的转发器(每行3个用于调查)。我想更改点击的超链接的图像。转发器是从其绑定的数据源创建的。不能让它运作

编辑:我使用了你的例子,它确实改变了图像,但它改变了所有ID =“HappyLink”项而不是所选项。

    // if the happy emoticon was clicked
    if (this.Request.QueryString["hyperlink"] == "HappyLink")
    {
        HyperLink happylink = e.Item.FindControl("HappyLink") as HyperLink;

        if (happylink != null)
        {
            happylink.ImageUrl = "~/images/happy_selected.jpg";
        } // if (happylink != null)
    } // if (this.Request.QueryString["hyperlink"] == "HappyLink")

1 个答案:

答案 0 :(得分:2)

我认为您不必担心动态ID。 Repeater控件为您排序ID,您无需关心它们是什么。

如果您的意思是每个Hyperlink都是图片,那么您需要处理Repeater的{​​{3}}事件。在标记中,您为Hyperlink提供ID。在ItemDataBound事件处理程序中,您对从事件参数获取的FindControl对象使用Item方法,并传递Hyperlink的ID。这将为您提供实际的超链接控件。然后只需设置图像。

例如:

void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
   HyperLink hyperLink = e.Item.FindControl("HappyLink") as HyperLink;
   if (hyperLink != null)
   {
      // do something with the hyperlink
   }
}

FindControl方法中,您只需使用您在标记中设置的ID。 e.Item的使用可确保您从转发器的右行获取超链接。