Wie kann ich eine Kontrolle in der Fußzeile Vorlage eines Datenwiederholregister finden
-
10-07-2019 - |
Frage
ASPX: Code
<asp:repeater id="repeater" runat="server">
<headerTemplate></headerTemplate>
<itemtemplate></itemtemplate>
<footerTemplate> <asp:literal id=findme runate=server> </footerTeplate>
</asp:repeater>
Was ich suche ist Quellcode der Lage sein, die Kontrolle innerhalb der Fußzeile eines Datenrepeater zu finden. Im vertraut mit dem grundlegenden „Findcontrol“ Wenn ich ein databind oder suche Kontrolle innerhalb der Seite selbst, aber wie finde ich die Kontrolle innerhalb einer Fußzeile Vorlage eines Datenwiederholregister?
Ist das überhaupt möglich? und wenn ja, wie kann ich bitte etwas Hilfe bekommen,
Dank nochmals an alle !!!
[update]
Ich muss in der Lage, dies nach dem databind zu tun
Lösung
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
Andere Tipps
Es gibt eine Reihe von Möglichkeiten, wie Sie es tun können, die genaue Art und Weise hängt davon ab, wenn Sie Zugriff auf die Kontrolle bekommen möchten.
Wenn Sie es während DataBind, füllen Sie einfach die folgenden Schritte aus innerhalb der Artikel Databound.
if(e.Item.ItemType == ItemType.Footer)
{
Literal findMe = (Literal)e.Item.FindControl("findMe");
//Your code here
}
Wenn Sie es an einem anderen Zeitpunkt finden mögen, greifen Sie auf den Artikel-Sammlung des Repeaters, dann finden Sie das „Footer“ item, und von diesem Punkt können Sie die Kontrolle finden.
Aktualisieren
Basierend auf Ihrer zusätzliche Anmerkung, Sie können dies tun, indem Sie das Element Sammlung aufzählt, unten ist ein Beispiel mit einem Repeater, der eine ID von myRepeater hat.
foreach (RepeaterItem item in myRepeater.Items)
{
if (item.ItemType == ListItemType.Footer)
{
Literal findMe = (Literal)item.FindControl("findMe");
//Do your stuff
}
}
Ich glaube, Sie haben die ListItemType in einem ItemDataBound Ereignishandler zu überprüfen. Sie können für Kopf- oder Fußzeile überprüfen und dann die Findcontrol-Methode verwenden, um die Steuerung zuzugreifen.
Foreach (RepeaterItem item in myRepeater.Controls)
Das funktioniert besser als Items-Auflistung enthält keine Kopf- und Fußzeilen
Wenn Sie die Fußzeile bekommen nach DataBind (das ist, was die OP zu wollen, erscheint), dann können Sie mit dem folgenden:
RepeaterItem item= (RepeaterItem)myRepeater.Controls[myRepeater.Controls.Count - 1];
if (item.ItemType == ListItemType.Footer) {
Literal findMe = (Literal)item.FindControl("findMe");
}