0

我在访问 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 中。任何帮助表示赞赏!

4

1 回答 1

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模式。

编辑:如果 Button 和 TextBox 共享相同的命名容器,这也应该有效:

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

这看起来真的像 ItemCommand

于 2013-08-27T15:10:19.690 回答