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を使用してこれを行う方法を見つけることができますが、これをコードビハインドに保持したいと思います。どんな助けでも大歓迎です!

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 に答える