Asp.net从aspx页面访问用户控件的控件

时间:2011-07-13 12:23:53

标签: asp.net user-controls

我有一个用户控件,它有一个方法,当点击aspx页面上的按钮时执行,我在方法中传递两个用户控件的ID,现在我想获取用户文本框的值控制,但不幸的是它没有识别我编码的文本框: -

 //Method to copy values from one control into another
        public void copyInfo(Control ctrl1, Control ctrl2) {  
            List<string> vals = new List<string>();
            foreach (Control c in ctrl1.Controls)
            {
                if (c is TextBox)
                {    
                    if (string.IsNullOrEmpty(((TextBox)c).Text)) { }
                    else {
                   //values from textbox
                        vals.Add(((TextBox)c).Text);
                    }
                }

                              .............
                                ..........
                                  ......

我如何获得文本框控件和值。

1 个答案:

答案 0 :(得分:0)

我会在你的UserControl上添加一个公共属性,例如:

public string SomeTextboxValue
{
  get
  {
    return SomeTextBox.Text;
  }

  set
  {
    SomeTextBox.Text = value;
  }
}

然后,您需要将控件转换为实际类型而不是通用Control类:

SomeControl someControl1 = (SomeControl)ctrl1;
SomeControl someControl2 = (SomeControl)ctrl2;
someControl1.SomeTextboxValue = someControl2.SomeTextboxValue;

或者反过来取决于副本中的from和dest。

更新讨论动态控制

如果您的控件是动态创建的,并且您无法在回发时找到它,可能是因为您没有在回发时重新创建控件。在尝试理解如何使用和处理来自动态控件的数据时,我发现本系列文章非常有趣:

该链接指向第三部分,但其中重要部分涵盖了您的场景:

  

创建自定义客户端属性UI并加载客户端   数据库中的当前值

     

以编程方式将Web控件添加到ASP.NET页面时   必须将控件添加到每个页面的页面上   页面访问。这包括第一页访问和所有后续访问   回传。