如何将位于一个控件中的文本框的值获取到另一个控件中

时间:2011-10-05 18:06:29

标签: c# asp.net

我有2个控件 - ProductInfo和Distribution 在产品信息控件上有这些文本框--txtPrice,txtDate,txtFreq 在分布控件上,我想获得上面文本框的值。 我试过了:

BasePage.FindControl("txtPrice")

但它返回null。 请帮忙。

谢谢,

1 个答案:

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