2010-07-22 112 views
1

裁判:Dynamic Control IDASP:超鏈接的動態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") 

回答

2

我不認爲你需要擔心動態ID。 Repeater控件將爲你整理ID,你不需要關心它們是什麼。

如果您的意思是每個Hyperlink都是圖片,那麼您需要處理RepeaterItemDataBound事件。在標記中,您給Hyperlink一個ID。在ItemDataBound事件處理程序中,您使用Item對象的FindControl方法從事件參數獲得,傳遞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可確保您從中繼器的右側獲得超鏈接。

+0

感謝您的回覆。我在中繼器中有3個超鏈接控件(HappyLink,OkLink,FailLink),並且它們都相應地循環。但是,我給他們的ID與我擁有的所有數據綁定項目相同。我知道ID更改爲Repeater1_ctl01_HappyLink。點擊時如何使用FindControl方法查找第5行的第一個圖標?例如Repeater1_ctl05_HappyLink。我來自一個PHP背景,所以請忍受我 – Thomas 2010-07-22 09:41:51

+0

@Thomas:我已經添加了一個例子,希望這可以讓事情更清楚。 – 2010-07-22 10:40:16