gpt4 book ai didi

asp.net - UpdatePanel 包裹着用户控件

转载 作者:行者123 更新时间:2023-12-02 15:51:51 27 4
gpt4 key购买 nike

我有一个用户控件,其中包含一些按钮和一个占位符。这些按钮会导致在占位符中添加/删除控件。一切正常。

现在我想将此用户控件放入页面中,并将其包装在更新面板中,如下所示:

            <asp:UpdatePanel ChildrenAsTriggers="true" ID="UpdatePanelFoo" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<grid:tablegrid ID="tablegrid_chapters" runat="server" SomeProperty="bar" />
</ContentTemplate>
</asp:UpdatePanel>

当我运行该页面时,当我点击用户控件内的某个按钮时,它仍在执行完整的回发。我做错了什么,我该如何补救?

更新:

protected void Page_Init()
{
ScriptManager scr = ScriptManager.GetCurrent(this.Page);
Response.Write("EnablePartialRendering: " + scr.EnablePartialRendering);
}

输出“EnablePartialRendering:true”

最佳答案

确保页面中的 ScriptManager 上有 EnablePartialRendering=true

更新

看起来您的 UserControl 没有要查找的事件...这里有 2 个选项。将 UpdatePanel 移动到 UserControl .ascx 中,以便它可以将按钮事件视为子级,以进行配置或添加事件以供其查看,为此,请尝试以下操作:

    public event EventHandler Click;

void btn_del_Click(object sender, EventArgs e)
{
if (NumberOfRowControls > 0)
{
var rowToWhack = panel_rows.Controls.Children().Single(x => x.ID == "myrow" + (NumberOfRowControls - 1));
panel_rows.Controls.Remove(rowToWhack);
NumberOfRowControls--;
}
if(Click != null) Click(this, e);
}

void btn_add_Click(object sender, EventArgs e)
{
var row = NewRow(NumberOfRowControls);
panel_rows.Controls.Add(row);
if(Click != null) Click(this, e);
}

并更新 UpdatePanel 以查找它:

<asp:UpdatePanel ID="UpdatePanelFoo" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<grid:tablegrid ID="tablegrid_chapters" runat="server" SomeProperty="bar" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="tablegrid_chapters" EventName="Click">
</Triggers>
</asp:UpdatePanel>

关于asp.net - UpdatePanel 包裹着用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2157349/

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