1

我在 .aspx 页面上有一个文本框。在此页面上有一个用户控件。在此用户控件内部有一个按钮。我想在按钮单击时获取不在用户控件内部的文本框的值。如何我这样做

请帮我 。

4

5 回答 5

2

在用户控件的按钮单击事件中写下这一行

protected void Button_Click(sender obj,EventArgs arg)
{
  TextBox txtbox= (((MyPage)parent).FindControl("TextBoxid") as TextBox);
  if(txtbox!=null)
   (((MyPage)this.Page).FindControl("TextBoxid") as TextBox).Text;
  //or 
  //(((MyPage)this.Parent).FindControl("TextBoxid") as TextBox).Text;

}

或者

替代方法是在您的页面中创建属性并在您的用户控件中访问它

public string txtValue
{
  get 
  {
    return TextboxID.Text;
  }
}

在用户控件的按钮单击事件中

protected void Button_Click(sender obj,EventArgs arg)
{
    string txtvalue = ((Mypage)this.Page).txtValue;
   //or
   //((MyPage)this.Parent).txtValue;

}
于 2012-06-06T11:47:48.813 回答
0

尝试使用以下方法,

((TextBox)USerControl.Parent.FindControl("txtbox")).Text
于 2012-06-06T11:49:33.553 回答
0

考虑到解耦,我建议如果您的用户控件需要访问它之外的信息,那么应该传入该信息,反之亦然。控件不应该对信息的来源负责,它只知道有信息。考虑到这一点,我建议冒泡事件以获取所需的信息。

事件冒泡

这将涉及创建一个新的委托,然后Button在单击它后触发它,从而使事件冒泡并允许我们返回所需的值,在本例中是文本框的值。

第 1 步:声明委托

// declare a delegate
public delegate string MyEventHandler(object sender, EventArgs e);

步骤 2:更新用户控件

// update the user control
public class MyUserControl : UserControl
{
    // add the delegate property to your user control
    public event MyEventHandler OnSomeButtonPressed;

    // trigger the event when the button is pressed
    protected void MyButton_Click(object sender, EventArgs e)
    {
        string someString = string.Empty;
        if (this.OnSomeButtonPressed != null)
        {
            someString = this.OnSomeButtonPressed(this, e);
        }

        // do something with the string
    }    
}

第三步:更新页面

// be sure to register the event in the page!
public class MyPage : Page
{
    protected override void OnLoad(object sender, EventArgs e)
    {
        base.OnLoad(sender, e);
        myUserControl.OnSomeButtonPressed += this.HandleUserControl_ButtonClick;
    }

    public string HandleUserControl_ButtonClick(object sender, EventArgs e)
    {
        return this.SomeTextBox.Text;
    }
}
于 2012-06-06T12:48:38.570 回答
0
((TextBox)USerControl.Page.FindControl("txtbox")).Text

或者

((YourPageType)USerControl.Page).TextBox.Text
于 2012-06-06T11:47:41.007 回答
0
protected void MyButton_Click(object sender, EventArgs e)
{
  string TextBoxValue;
  TextBoxValue = MyTextBox.Text;
}

是你想要的吗?

于 2012-06-06T11:47:57.493 回答