2015-12-17 2 views
0

У меня есть кнопка, сидящая внутри элемента управления внутри панели обновления, которая не отправляется обратно на сервер, и я не могу понять, почему.Отправить сообщение с помощью кнопки в элементе управления пользователя на панели обновления

Кнопка просто нормальный жерех: кнопка:

<asp:Button ID="btnContinue" runat="server" CssClass="close-reveal-modal button-primary" Text="Continue"></asp:Button> 

зарегистрировать свой клик событие при загрузке пользовательского элемента управления:

btnContinue.Click += new EventHandler(btnContinue_Click); 

управление, содержащие кнопки является BestAvailable контроля над эту страницу в этой обновленной паспорте:

<asp:UpdatePanel runat="server" ID="updatePnlBestAvailable" class="best-available" ChildrenAsTriggers="true"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="btnReserve" EventName="Click" /> 
    </Triggers> 
    <ContentTemplate> 
     <uc:BestAvailable runat="server" ID="BestAvailableControl"></uc:BestAvailable> 
     <div id="bestAvailablePanelControls"> 
      <asp:Button runat="server" Style="display: none;" ID="ChangeButton" 
       OnClick="Change_Click" ClientIDMode="static" 
       CssClass="ChangeButton" /> 
     </div> 
    </ContentTemplate> 
</asp:UpdatePanel> 

Отказ на кнопке не является ок. вообще-то, у меня есть точка останова на первой строке в обработчике событий кликов, и она никогда не попадает. По словам моих сотрудников, это происходит потому, что кнопка находится в вышеупомянутой панели обновления. Я пробовал несколько вещей, чтобы решить эту проблему без успеха.

  • Я попытался добавить идентификатор кнопки и PostBackTrigger моей панели обновления, как это с с в пользовательский элемент управления и содержащий управление:

    UpdatePanelControlTrigger trigger = new PostBackTrigger(); 
    trigger.ControlID = this.BestAvailableControl.btnContinue.UniqueID; 
    updatePnlBestAvailable.Triggers.Add(trigger);

    Результат был исключением говоря A control with ID '<unique id prefix>$btnContinue' could not be found for the trigger in UpdatePanel 'updatePnlBestAvailable'. я попытался зарегистрировать контроль непосредственно в отметке с тем же результатом.

  • Я пробовал обернуть кнопку в своей собственной панели обновления после этого сообщения: Custom User Control in UpdatePanel forcing Postback. Это не имело никакого отношения к поведению, которое я мог видеть.

Я не очень хорошо знаком с панелями обновлений, поэтому у меня заканчиваются идеи. Кто-нибудь знает, почему моя кнопка не отправляется обратно на сервер?

ответ

1

Я понял это несколько дней назад и только сейчас понял, что я не обратился к этому вопросу. Итак, на всякий случай кто-то спотыкается об этом, вот сделка.

Я понял, что панель обновления действительно препятствовала отправке сообщения. Хотя ChildrenAsTriggers был установлен как true, кнопка, находящаяся внутри другого пользовательского элемента управления, означала, что она не будет отбрасываться вообще. Я закончил создание скрытой второй кнопки непосредственно внутри панели обновлений и с помощью JavaScript, чтобы кнопка оригинала нажала вторую, что и вызвало обратную передачу. После повторного запуска кода сервера я вызвал событие click исходной кнопки.

Да, это немного взломать, но UpdatePanels в целом смешны, поэтому вы играете с рукой, которую вы раздаете.