2011-07-01 35 views
1

我有像「repeater1」,「repeater2」一個aspx頁面一堆中繼器等獲取直放站通過字符串在ASP.NET

我想訪問他們喜歡

for(int i = 0; i < 5; i++) 
    // get the repeater like FindRepeater("repeater"+i) and bind it 

在代碼後面Page_Load我試過

Repeater repeater = (Repeater)this.FindControl("repeater"+i) 

但它說我不能將控件投到中繼器。

這怎麼辦?

+0

我沒有答案,應該可以工作。但是我發現它不滿意你將一個int附加到一個字符串中。嘗試String.Format(「repeater {0}」,i) – stephenbayer

回答

2

我正在運行你的代碼(除了轉換i tostring()),它的建築物很好。您可以如果您的網頁使用母版頁試試這個..

Repeater repeater = this.FindControl("repeater"+i.ToString()) as Repeater; 
+0

這就是我在評論中所說的類似內容。我不知道如果你使用字符串連接和一個整數會發生什麼,因爲我從來沒有這樣做。在這種情況下,我通常會使用String.Format(「repeater {0}」,i)。 – stephenbayer

+0

「中繼器」+ i.ToString()它與「中繼器」+我是一樣的無論類型是我,重載將調用ToString –

+0

哇,我不知道c#做到了。 THX ^^ –

0

,則需要使用以下命令:

Repeater rptr = (Repeater)this.Master.FindControl("body").FindControl("repeater" + i); 

,其中機構是ContentPlaceHolderId。此外,如果中繼器在用戶控制範圍內,則需要執行以下操作:

Repeater rptr = (Repeater)this.Master.FindControl("body").FindControl("MyUserControl").FindControl("repeater" + i);