我有一个下拉列表(在页面上),它有OnSelectedIndexChange事件,每次(使用LoadControl命令)动态加载不同的Control(ascx) - 进入页面。
每个控件都有一个按钮(runat = server)和TextBox(runat = server)。
当我点击按钮时 - 我无法进入Onclick功能。
如何进入Ascx的OnClick功能?
我知道每个SelectedIndexChange都会进行回发 - 所以我知道我必须在viewstate中保存一些内容。但我不知道如何保存它,然后在TexstBox上获取值。 (每个ascx)
答案 0 :(得分:1)
您需要向用户控件添加事件处理程序,如下所示:
public event EventHandler ButtonClick;
在按钮的点击事件中:
protected void Button1_Click(object sender, EventArgs e)
{
if (this.ButtonClick != null)
this.ButtonClick(this, e);
}
然后,从页面中,您可以获得这样的点击事件:
<UC:MyUserControl ID="UserControl1" runat="server" OnButtonClick="UserControl1_ButtonClick" ... />
protected void UserControl1_ButtonClick(object sender, EventArgs e)
{
//Handle the click event here
}
如果您正在动态加载控件,那么您需要确保控件在回发后重新水化,并通过代码协助事件处理程序来模拟上面的代码:
MyUserControl ctrl = (MyUserControl)this.LoadControl("...");
ctrl.ButtonClick += new EventHandler(UserControl1_ButtonClick);