Не удалось найти элемент управления с идентификатором для триггера в UpdatePanel - PullRequest
8 голосов
/ 12 июля 2011

У меня есть панель обновления, для которой UpdateMode of Conditional и ChildrenAsTriggers установлены в 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 находится вретранслятор и может не быть там сразу, он действует так, как будто его не существует.Как я могу обойти это?

1 Ответ

13 голосов
/ 12 июля 2011

Поскольку ваш элемент управления находится в repeater control и находится вне области действия Trigger collection. Кстати, вам не нужно add trigger, потому что ваш элемент управления кнопкой уже находится в UpdatePanel, он будет обновляться при нажатии кнопки.

Редактировать: Существует решение, если вы действительно хотите обновить свою панель обновления updPnlMain. Вы можете вставить другую панель обновлений и поместить свою кнопку на этой панели. например,

<asp:UpdatePanel ID="updButton" runat="server" UpdateMode="Conditional">
  <asp:Button ID="btnAddSomething" runat="server" OnClick="btnAddSomething_Click" />
</ContentTemplate>

, а затем просто вызовите метод updPnlMain.Update(); в событии btnAddSomething_Click.

Он действительно сделает то, что вы ищете:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...