我有2个控件 - ProductInfo和Distribution 在产品信息控件上有这些文本框--txtPrice,txtDate,txtFreq 在分布控件上,我想获得上面文本框的值。 我试过了:
BasePage.FindControl("txtPrice")
但它返回null。 请帮忙。
谢谢,
答案 0 :(得分:1)
我会在ProductInfo控件中创建属性以显示txtPrice的值,如下所示:
public decimal Price
{
get { return Decimal.Parse(txtPrice.Text); }
}
然后在其他用户控件中尝试这样的事情:
ProductInfo prod = Page.FindControl("OtherUserControl") as ProductInfo;
if (prod != null)
{
decimal price = prod.Price;
}
递归方法
您可能需要使用递归来查找ProductInfo
控件,如果您执行此类操作,则应该有效:
private Control FindControlRecursive(string controlID, Control parentCtrl)
{
foreach (Control ctrl in parentCtrl.Controls)
{
if (ctrl.ID == controlID)
return ctrl;
FindControlRecursive(controlID, ctrl);
}
return null;
}
使用FindControlRecursive
:
ProductInfo prod = FindControlRecursive("OtherUserControl", Page) as ProductInfo;
if (prod != null)
{
decimal price = prod.Price;
}