我有一个动态创建的物料清单,每个订单项都是动态的user_control。 user_control有一个用于数量输入的文本框。当我单击提交按钮时,我想从每个文本框中获取所有数量,但控件在页面加载时全部消失,页面显示零控件。
我知道您可以打开文本框的自动回复,然后捕获每个单独的text_changed_event,但这看起来效率不高。当用户点击提交按钮时,我想循环浏览所有这些按钮,然后将它们带回到相同的物料清单页面。
答案 0 :(得分:0)
首先,控件在回发时消失的原因是它们被动态地添加到您的页面中,并且当发生回发时,有关动态控件的信息丢失,页面没有关于这些动态控件的信息。
现在关于从动态用户控件中的控件获取值,您已使用FindControl
方法或必须遍历用户控件的Controls集合以获取对TextBoxes
的引用。
关于如何执行此操作的想法:
//1. Using ID of user control
//inside button_click method
protected void btnSubmit_Click(...)
{
TextBox txt1 = idOfUserControl.FindControl(textBoxId);
}
//2. Using type of user control
//inside button_click method
protected void btnSubmit_Click(...)
{
foreach(Control c in Page.Controls)
if(c is YourUserControlClass)
{
YourUserControlClass control = (YourUserControlClass)c;
TextBox txt1 = c.FindControl(textBoxId);
}
}