按钮动作未触发
本文关键字:按钮 | 更新日期: 2023-09-27 17:49:18
我有一个动态加载控件在组合框(devexpress)选择的web表单。我在主表单
上有以下代码 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
}
if (Session["_active_control"] != null)//persist control on postbacks
{
Control cntrl = Session["_active_control"] as Control;
pnl_main.Controls.Clear();
pnl_main.Controls.Add(cntrl);
}
}
protected void cmb_control_SelectedIndexChanged(object sender, EventArgs e)
{
Control cntrl= Page.LoadControl("~/" + cmb_control.SelectedItem.Value);
pnl_main.Controls.Clear();
pnl_main.Controls.Add(cntrl);
Session["_active_control"] = cntrl;
}
我也有一个用户控件有三个文本框和一个按钮代码
protected void btn_save_Click(object sender, EventArgs e)
{
lbl.Text = ASPxTextBox1.Text + "<br>" + ASPxTextBox2.Text + "<br>" + ASPxTextBox3.Text;
}
我的问题是,保存按钮的用户控制是不触发,如果我加载它动态(我已经检查使用断点,也上面所示的代码。然而,如果我静态地使用它,它会运行得很顺利。通过在设计模式下拖动)
您必须在多个回发之间持久化控件,这是正确的。
但是,页面加载事件太晚,无法添加回控件。在页面的Init事件上执行此操作,您应该就没问题了。要接收回发事件,该控件应该在ProcessPostData(在PreLoad之前调用)被调用时出现。
同样,对于文本框,您将希望接收用户输入的值。这也发生在ProcessPostData上,如果您在此之后添加控件,您将不会收到用户输入的值。
参考:ASP。. NET页面生命周期
我找到解决办法了
在combobox_selectedindexchanged中创建控件时,我将控件创建代码放在基于combobox的页面加载上。selectedindex。
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (cmb_control.SelectedItem != null)
{
Control cntrl = Page.LoadControl("~/" + cmb_control.SelectedItem.Value);
cntrl.ID = "_new_ctrl" + cmb_control.SelectedItem.Value;
pnl_main.Controls.Clear();
pnl_main.Controls.Add(cntrl);
}
}
参见asp.net中使用控件中的按钮单击事件未触发