在UpdatePanel中找不到ID为ID的控件作为触发器

我有一个更新面板,其中将Conditional和ChildrenAsTriggers的UpdateMode设置为false。我只希望一些控件引起异步回发:

<asp:UpdatePanel ID="updPnlMain" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">

<ContentTemplate>

// ...

<asp:Repeater ID="rptListData" runat="server">

<ItemTemplate>

<asp:Button ID="btnAddSomething" runat="server" OnClick="btnAddSomething_Click" />

</ItemTemplate>

</asp:Repeater>

// ...

</ContentTemplate>

<Triggers>

<asp:AsyncPostBackTrigger ControlID="btnAddSomething" EventName="Click" />

</Triggers>

</asp:UpdatePanel>

尝试加载此页面时出现以下错误:

A control with ID 'btnAddSomething' could not be found for the trigger in UpdatePanel 'updPnlMain'.

由于我的btnAddSomething控件位于转发器中,可能不会立即存在,因此它的行为就好像它不存在一样。我该如何解决?

回答:

因为您的控件在中,repeater control并且不在的范围内Trigger collection。顺便说一下,您不需要,add

trigger因为您的按钮控件已在中UpdatePanel,当您单击按钮时它会更新。

如果您确实要更新updPnlMain

updatepanel,则有一个解决方案。您可以放入另一个updatepanel并将按钮放在该面板中。例如

<asp:UpdatePanel ID="updButton" runat="server" UpdateMode="Conditional">

<asp:Button ID="btnAddSomething" runat="server" OnClick="btnAddSomething_Click" />

</ContentTemplate>

然后updPnlMain.Update();btnAddSomething_Click事件中简单地调用该方法。

它实际上会做您想要的:)

以上是 在UpdatePanel中找不到ID为ID的控件作为触发器 的全部内容, 来源链接: utcz.com/qa/421439.html

回到顶部