2013-08-27 51 views
0

我在使用ContentPlaceHolder中的中繼器訪問控件時遇到了一些麻煩。我以前的方法沒有母版頁工作正常,但現在我包括一個母版頁,它主要是因爲命名拋出了很多東西。這裏是我以前有沒有母版頁的工作代碼:在中繼器內查找ContentPlaceHolder中的控件

LinkButton button = sender as LinkButton; 

// Get index of LinkButton that was clicked 
int repeaterItemIndex = ((RepeaterItem)button.NamingContainer).ItemIndex; 

foreach (RepeaterItem myRepeater in rptrWebsites.Items) 
{ 
    TextBox myText = myRepeater.FindControl("Web") as TextBox; 
    var id = myText.ClientID; 

    // Get just the number part of the ID 
    id = id.Replace("rptrWebsites_Web_",""); 

    if (repeaterItemIndex.ToString() == id) 
    { 
     webName = myText.Text; 
    } 
} 

我的ContentPlaceHolder的名字是ContentPlaceHolderBody。我大概可以找到一種使用jQuery來做到這一點的方法,但我更願意將其保留在Codebehind中。任何幫助表示讚賞!

回答

0

不知道,但也許這就是你想找的:

LinkButton button = sender as LinkButton; 

// Get index of LinkButton that was clicked 
int repeaterItemIndex = ((RepeaterItem)button.NamingContainer).ItemIndex; 

foreach (RepeaterItem myRepeater in rptrWebsites.Items) 
{ 

    if (repeaterItemIndex == myRepeater.ItemIndex) 
    { 
     TextBox myText = myRepeater.FindControl("Web") as TextBox; 
     webName = myText.Text; 
    } 
} 

無論如何,我建議你發佈更多的代碼,並解釋你想達到什麼。由於您的代碼似乎適合ItemCommand模式。

編輯:如果按鈕和文本框共享相同的命名容器,這應該也行:

LinkButton button = sender as LinkButton; 
TextBox myText = button.NamingContainer.FindControl("Web") as TextBox; 
webName = myText.Text; 

這真的好像ItemCommand

+0

如果我能游到你現在和高哪裏五你我會。這正是我需要它做的。完美的作品。謝謝! 對於閱讀本文並試圖瞭解最終目標的人,我需要從屬於我在中繼器中單擊的行的某個文本框中獲取文本。我不知道如何通過contentplaceholder來解決這個問題,但@jbl保存了一天。 – Rafa

+1

@Rafa用較短的解決方案編輯了我的答案 – jbl

+0

你的第二個建議也很完美。猜猜我還有很多東西要學會找到更好的解決方案。 – Rafa

相關問題