gpt4 book ai didi

c# - ASP.NET 动态添加 UserControl 到 PlaceHolder,不触发 Click 事件,只触发 Page_Load

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:57 25 4
gpt4 key购买 nike

在我的 ASP.Net 页面中,我有 PlaceHolder 和 Button。当用户单击此按钮时,我将一些 UserControls 从我的接口(interface)方法 getControl 添加到 PlaceHolder。代码:

    protected void ActionBtn_Click(object sender, EventArgs e)
{
if (provider != null)
{
actualObject = (PlaceHolder)provider.getControl();
PlaceHolder1.Controls.Add(actualObject);
}
}

方法获取控件:

    public object getControl()
{
ph = new PlaceHolder();

exportInbBtn = new Button();
exportInbBtn.Text = "Export Inventury";
exportInbBtn.Click += new EventHandler(myButton_ServerClick);
ph.Controls.Add(exportInbBtn);
exportInbBtn.ID = "exportInbBtn";

return ph;
}

ASP页面中的方法Page_Load和Page_Init为空。问题是,当用户单击按钮 exportInbBtn(带有文本:“Export Inventury”)时,单击事件 myButton_ServerClick 不会上升。仅网页刷新。我准备了一些答案,但我想不出解决这个问题有多容易。

最佳答案

如果您触发 *myButton_ServerClick* 事件,将调用回传并且 ASP.Net 想要触发调用的事件,但您的控件未添加到页面,这就是 ASP.Net 忽略此事件的原因。

在回发之后和事件被触发之前,您必须再次添加您的控件,并且在它们之后,事件将被调用。

更新

像这样

页面:

<asp:Button runat="server" ID="btnTest" Text="Add control" OnClick="btnTest_Click"/>
<asp:Label runat="server" ID="result"></asp:Label>
<asp:HiddenField runat="server" ID="controlLoaded"/>
<asp:PlaceHolder runat="server" ID="phTest"></asp:PlaceHolder>

代码隐藏:

    protected void Page_Load(object sender, EventArgs e)
{
if (controlLoaded.Value == "1")
{
AddControl();
}
}

protected void btnTest_Click(object sender, EventArgs e)
{
AddControl();
}

protected void myButton_ServerClick(object sender, EventArgs e)
{
result.Text = "OK";
}

public object getControl()
{
var ph = new PlaceHolder();

var exportInbBtn = new Button();
exportInbBtn.Text = "Export Inventury";
exportInbBtn.Click += new EventHandler(myButton_ServerClick);
ph.Controls.Add(exportInbBtn);
exportInbBtn.ID = "exportInbBtn";

return ph;
}

private void AddControl()
{
var actualObject = (PlaceHolder)getControl();
phTest.Controls.Add(actualObject);
controlLoaded.Value = "1";
}

关于c# - ASP.NET 动态添加 UserControl 到 PlaceHolder,不触发 Click 事件,只触发 Page_Load,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19301005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com