Como posso encontrar um controle no modelo de rodapé de um repetidor de dados
-
10-07-2019 - |
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
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");
}