UpdatePanel с триггером asyncpostback работает неправильно и вызывает странное поведение - PullRequest
1 голос
/ 04 апреля 2019

Здесь происходит нечто странное. В настоящее время у меня есть выпадающий список drpIntervention, который имеет autopostback = "true", и до сих пор я вызывал код сервера, чтобы отключить / включить элементы управления в зависимости от выбранного значения. Мне не нравится мерцание с постбэками, поэтому я пытаюсь обернуть код в UpdatePanel с помощью AsyncPostBack Trigger, но происходят странные вещи:

Вот как выглядит код для этого обновления:

     <asp:UpdatePanel ID="UpdatePanel5" runat ="server" UpdateMode ="Conditional">
      <ContentTemplate >
        <tr>
         <td colspan="3" class="questionFont">
          <table style="width:100%; border-collapse:collapse ">
          <tr>
            <td>
              <b>a.&nbsp;What is the Problem?</b>
            </td>
            <td >
             <asp:DropDownList ID="drpCrisisType" runat="server" autopostback="true" Enabled ="false" OnSelectedIndexChanged="drpCrisisType_SelectedIndexChanged ">
             </asp:DropDownList>
             <span runat="server" style="font-size:12px;  font-family :'Times New Roman';" ID="Span16"><i>(Description)</i></span>
            </td>
         </tr>                                    
   </ContentTemplate>
       <Triggers>  
          <asp:AsyncPostBackTrigger ControlID="drpIntervention" EventName="SelectedIndexChanged" />
       </Triggers>
   </asp:UpdatePanel>

и это код для кнопки, которая должна вызывать событие, которое находится за пределами панели обновления

  <tr>
     <td class="questionFont" style="padding-top: 20px">
       <b>4.&nbsp;Did you engage in any?</b>
     </td>
     <td style="padding-top: 20px">
        <asp:DropDownList ID="drpIntervention" runat="server" autopostback="true"  OnSelectedIndexChanged="drpIntervention_SelectedIndexChanged ">
        </asp:DropDownList>
     </td>
   </tr>

Так что это не весь мой код, <tr> относится к таблице, над которой гораздо больше, эта панель обновлений и раскрывающийся список являются лишь частью этого. Происходит следующее: я загружаю страницу в браузер, и все выглядит хорошо, затем я выбираю значение в drpIntervention, и содержимое (другие выпадающие списки и текстовые поля, в которых есть код сервера для включения / отключения), перенесенное на панель обновлений, перемещается. выше другого контента на странице. Еще более странным является то, что перемещаемый контент работает правильно без выполнения операции postback, однако контент также находится на своем первоначальном месте и не работает там.

Надеюсь, у меня есть смысл, контент на панели обновлений находится буквально в 2 местах на странице, как только я выберу значение из drpIntervention. Разум взорван!

1 Ответ

0 голосов
/ 04 апреля 2019

Я считаю, что проблема была связана с тем, куда я положил asp:update panel. Поскольку я помещал его в таблицу, он каким-то образом переопределял форматирование и переносил содержимое панели обновлений в верхнюю часть таблицы.

Проблема решена, когда я создал таблицу для этих вопросов и обернул всю таблицу asp:update panel. Это решило проблемы

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