Pergunta

Eu tenho um DropDownList em um controle de repetidora, bem como um botão.

O botão está desabilitado até que um item válido é selecionado no DropDownList, quando eu quiser ativar o botão. Infelizmente eu não consigo chegar a ele.

Encontrado o repetidor por: (.Como () é um método de extensão para (objeto como T), só faz lançando mais fácil)

sender.As<Control>().NamingContainer.Parent.As<Repeater>()

No entanto, o Repeater eu voltar não me ajuda como a função FindControl (String name) não está retornando qualquer coisa -. E mostra nada de útil na janela do relógio

Então, como posso obter um controle irmão (um ImageButton, neste caso) em um repetidor de um evento de outro item no repetidor (DropDown_SelectedIndexChanged neste caso)?

Editar

Eu finalmente funcionou

sender.As<ImageButton>().NamingContainer.As<RepeaterItem>().FindControl("ControlName")
Foi útil?

Solução

Eu acho que eu tenho a resposta para sua pergunta:

1.-I criar um repetidor com o dropdownlist e botão para fazer os testes:

 <asp:Repeater ID="rp" runat="server">
   <ItemTemplate>
        <asp:DropDownList ID="DropDownList1" AutoPostBack="true" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
        <asp:ListItem>1</asp:ListItem>
        <asp:ListItem>2</asp:ListItem>
        <asp:ListItem>3</asp:ListItem>
        <asp:ListItem>4</asp:ListItem>
        <asp:ListItem>5</asp:ListItem>
        <asp:ListItem>6</asp:ListItem>

        </asp:DropDownList>
        <asp:ImageButton ID="Button1" runat="server" Enabled="False" />
        </ItemTemplate>
        </asp:Repeater>

Eu vincular o repetidor.

2.-I criar o método DropDownList1_SelectedIndexChanged:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        DropDownList control = (DropDownList)sender;

        RepeaterItem rpItem = control.NamingContainer as RepeaterItem;
        if (rpItem != null)
        {
            ImageButton btn = ((ImageButton)rpItem.FindControl("Button1"));
            btn.Enabled = true;

        }

    }

A maneira de fazer isso é perguntar ao controle, que é o seu pai, que é dizer, o RepeaterItem, ou você pode usar NamingContainer (como escrevi finalmente) e lá você pode perguntar sobre qualquer controle que está dentro .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top