Pergunta

ASPX: Código

<asp:repeater id="repeater" runat="server">

<headerTemplate></headerTemplate>

<itemtemplate></itemtemplate>

<footerTemplate> <asp:literal id=findme runate=server> </footerTeplate>

</asp:repeater>

O que eu estou procurando é o código-fonte para ser capaz de encontrar o controle dentro do rodapé de um repetidor de dados. Im familiarizado com o básico "FindControl" quando eu faço um databind ou olhar para o controle dentro da própria página, mas como eu posso encontrar o controle dentro de um modelo de rodapé de um repetidor de dados?

Este é mesmo possível? e se assim como posso por favor obter algum tipo de assistência,

obrigado novamente a todos !!!

[update]

eu preciso ser capaz de fazer isso após a vincular

Foi útil?

Solução

Protected Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
    If e.Item.ItemType = ListItemType.Footer Then
        Dim Lit As Literal = CType(e.Item.FindControl("findme"), Literal)
    End If
End Sub

Outras dicas

Há uma série de maneiras que você pode fazê-lo, a maneira exata depende de quando você deseja obter acesso ao controle.

Se você quiser durante DataBind, basta fazer o seguinte dentro do item Databound.

if(e.Item.ItemType == ItemType.Footer)
{
    Literal findMe = (Literal)e.Item.FindControl("findMe");
    //Your code here
}

Se você quiser encontrá-lo em outro ponto do tempo, coleção de itens de acesso do repetidor, em seguida, localize o item "Rodapé", ea partir desse item, você pode encontrar o controle.

Atualizar

Com base na sua nota adicional, você pode fazer isso, enumerando a coleção item, abaixo é um exemplo com um repetidor que tem um id de MyRepeater.

foreach (RepeaterItem item in myRepeater.Items)
{
    if (item.ItemType == ListItemType.Footer)
    {
        Literal findMe = (Literal)item.FindControl("findMe");
        //Do your stuff
    }
}

Eu acho que você tem que verificar o listItemType em um manipulador de eventos ItemDataBound. Você pode verificar se há cabeçalho ou rodapé e, em seguida, usar o método FindControl para acessar o controle.

Foreach (RepeaterItem item in myRepeater.Controls)

Isto irá funcionar melhor como coleção de itens não contém cabeçalho e rodapé

Se você precisa para obter o rodapé após DataBind (que é o que o OP parece querer), então você pode usar o seguinte:

RepeaterItem item= (RepeaterItem)myRepeater.Controls[myRepeater.Controls.Count - 1];
if (item.ItemType == ListItemType.Footer) {
    Literal findMe = (Literal)item.FindControl("findMe");
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top