我有一个动态创建的物料清单,每个行项目都是一个动态user_control。user_control有一个用于输入数量的文本框。当我单击submit按钮时,我想要从每个文本框中获取所有数量,但是在页面加载时所有控件都消失了,并且页面显示零个控件。
我知道您可以打开文本框的自动回传,然后捕获每个单独的text_changed_event,但这似乎效率不高。我想在用户单击submit按钮时循环遍历所有它们,然后将它们带回相同的物料清单页面。
发布于 2011-09-22 11:46:44
首先,控件在回发时消失的原因是它们是动态添加到页中的,当回发发生时,有关动态控件的信息会丢失,并且页没有有关这些动态控件的信息。
现在,关于从动态用户控件内的控件中获取值,您必须使用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);
}
}
https://stackoverflow.com/questions/7505901
复制