从页面Asp.Net中的动态控制中获取价值

时间:2011-09-21 20:00:00

标签: asp.net web-applications

我有一个动态创建的物料清单,每个订单项都是动态的user_control。 user_control有一个用于数量输入的文本框。当我单击提交按钮时,我想从每个文本框中获取所有数量,但控件在页面加载时全部消失,页面显示零控件。

我知道您可以打开文本框的自动回复,然后捕获每个单独的text_changed_event,但这看起来效率不高。当用户点击提交按钮时,我想循环浏览所有这些按钮,然后将它们带回到相同的物料清单页面。

1 个答案:

答案 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);
        }
}