【问题标题】:Get Value From Dynamic Control in Page Asp.Net从页面 Asp.Net 中的动态控制中获取价值
【发布时间】:2011-09-21 19:59:59
【问题描述】:
我有一个动态创建的物料清单,其中每个订单项都是一个动态 user_control。 user_control 有一个用于数量输入的文本框。当我单击提交按钮时,我想从每个文本框中获取所有数量,但控件在页面加载时全部消失,页面显示零控件。
我知道您可以为文本框打开自动回发,然后捕获每个单独的 text_changed_event,但这似乎效率不高。当用户单击提交按钮时,我想遍历所有这些,然后将它们带回相同的物料清单页面。
【问题讨论】:
标签:
asp.net
web-applications
【解决方案1】:
首先,控件在回发时消失的原因是它们是动态添加到您的页面中的,而当回发发生时,有关动态控件的信息丢失了,并且页面没有有关这些动态控件的信息。
现在关于从动态用户控件中的控件获取值,您已经使用 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);
}
}