Tôi cần lấy giá trị từ hộp văn bản bên trong FooterTemplate trong sự kiện OnClick của một nút. Suy nghĩ đầu tiên của tôi là lặp qua các item-property trên repeater của tôi, nhưng như bạn có thể thấy trong ví dụ này, nó chỉ bao gồm các mục databound thực tế, không phải là footer-item.Tại sao chân trang không có trong Repeater.Items?
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);
}
Mã này sẽ chỉ ra "2" như đếm, vì vậy làm thế nào để tôi nhận được để tham khảo textbox của tôi bên trong footertemplate ?
Các Repeater_ItemDataBound xảy ra trước khi người dùng đã nhập bất kỳ văn bản . Làm thế nào tôi có thể nhận được văn bản đó trong sự kiện OnClick sau khi người dùng đã nhập văn bản? – Espo
Hi Espo Bạn sẽ cần phải viết một phương thức đệ quy để tìm hiểu về kiểm tra bộ sưu tập Repeater1.Controls cho một hộp văn bản có tên là TextBox1. Bạn có thể làm cho nó nhanh hơn bằng cách chỉ nhìn vào chân trang đầu tiên. –
Ray: Đó là giải pháp tôi đang sử dụng bây giờ, nhưng có vẻ như "bẩn" để tạo ra một hàm đệ quy chỉ để có được một giá trị từ một hộp văn bản. Tôi đã hy vọng sẽ có một cách sạch hơn để làm điều đó. – Espo