gpt4 book ai didi

c# - 从 ChildControl 中的下拉列表触发 UpdatePanel

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:20 24 4
gpt4 key购买 nike

这是我的情况:

页面:

<asp:UpdatePanel ID="updatePanel1" runat="server" ChildrenAsTriggers="true">
<ContentTemplate>
...
<uc:ChildControl ID="ucChild" runat="server" />
...
</ContentTemplate>
</asp:UpdatePanel>

child 控制:

...
<asp:DropDownList id="dropDown1" runat="server" />
...

当 ChildControl 中的 DropDownList 的选择发生变化时,我想更新页面中的 UpdatePanel(异步)。我试过 AutoPostBack="true",但这总是导致页面的完整回发(请参阅 this question)。

我试过

<Triggers>
<asp:AsyncPostBackTrigger ControlID="???" EventName="SelectedIndexChanged" />
</Triggers>

但“dropDown1”和“ucChild.dropDown1”都不能用作 ControlID 的值。

我还尝试将 UpdatePanel 的引用传递给 ChildControl 并按以下方式添加触发器:

protected override void OnPreRender(EventArgs e)
{
if (ParentUpdatePanel != null)
{
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = dropDown1.ID;
trigger.EventName = "SelectedIndexChanged";
ParentUpdatePanel.Triggers.Add(trigger);
}
base.OnPreRender(e);
}

(也尝试使用 dropDown1.ChildID)

但是当下拉列表中的值发生变化时,我仍然无法触发 UpdatePanel。问题似乎是 UpdatePanel 看不到 ChildControl 中的 Control,因此无法相应地设置 Trigger。

我该怎么做?

最佳答案

也许可以将这段代码放在下拉列表中。

dropDown1.Attributes["onchange"] =   
Page.ClientScript.GetPostBackEventReference(ParentUpdatePanel, "") + "; return false;";

当您更改下拉列表时,您使用直接 javascript 调用将更新事件发送到 UpdatePanel。

关于c# - 从 ChildControl 中的下拉列表触发 UpdatePanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9210899/

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