Ich muss einen Wert aus einem Textfeld in einer FooterTemplate im OnClick-Ereignis einer Schaltfläche abrufen. Mein erster Gedanke war, die Items-Property auf meinem Repeater zu durchlaufen, aber wie Sie in diesem Beispiel sehen können, enthält es nur die eigentlichen Datenobjekte, nicht das Footer-Item.Warum ist das Fußzeilenelement nicht in Repeater.Items enthalten?
ASPX:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
Item<br />
</ItemTemplate>
<FooterTemplate>
Footer<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:Repeater>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
-Code-behind.cs:
protected void Page_Load(object sender, EventArgs e)
{
ListItemCollection items = new ListItemCollection();
items.Add("value1");
items.Add("value2");
Repeater1.DataSource = items;
Repeater1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine(Repeater1.Items.Count);
}
Dieser Code wird nur dann ausgegeben, "2", wie der Graf, so wie bekomme ich meine Textbox innerhalb der FooterTemplate referenzieren ?
Die Repeater_ItemDataBound geschieht, bevor der Benutzer einen beliebigen Text eingegeben hat . Wie kann ich diesen Text im OnClick-Ereignis abrufen, nachdem der Benutzer den Text eingegeben hat? – Espo
Hi Espo Sie müssten eine rekursive Methode schreiben, um in der Repeater1.Controls-Auflistung nach einem Textfeld namens TextBox1 zu suchen. Sie könnten es schneller machen, indem Sie zuerst nur in die Fußzeile schauen. –
Ray: Das ist die Lösung, die ich jetzt benutze, aber es scheint "schmutzig" zu sein, eine rekursive Funktion zu erstellen, nur um einen Wert aus einer Textbox zu erhalten. Ich hatte gehofft, dass es einen saubereren Weg geben würde. – Espo