Управление видимостью UpdatePanel в SelectedIndexChanged - PullRequest
1 голос
/ 23 августа 2011

После нескольких часов отладки этой проблемы (см. Заголовок) я прибегаю к интернетам.Чтобы заявить заранее, да, я читал «Вопросы с похожими названиями», создавая этот вопрос.Хотя они и дали некоторое хорошее представление, решение не было достигнуто.

Вот базовая карта событий:

  1. Загрузка страницы, первый индекс RadioListBox [0] установлен на выбранный= "true".
  2. Пользователь выбирает другой индекс, если выбрано определенное значение элемента, установите для видимости значение "true" последующей панели

Я довольно новичок в ASP.NET AJAX мир, поэтому любые советы приветствуются.Если вы не скажете мне есть какашку, я могу не оценить это.

Вот код, за которым следуют шаги, которые я предпринял для его отладки.

Разметка: (да, я знаю, что наборы полей не внутритеги формы не являются семантическими, об этом я буду беспокоиться позже)

<asp:UpdatePanel runat="server" ID="updpnlDDCancelPartnerOpts" UpdateMode="Conditional">
  <ContentTemplate>
    <asp:Panel runat="server" CssClass="frmDDCancelPartnerOpts">
      <fieldset>
        <legend>Digital Cancellation Options:</legend>
        <br />
        <asp:RadioButtonList ID="rdlstCancellOptions" runat="server" AutoPostBack="true"
                                    cssclass="rdBtnLstDDCancelOpts"                                 onselectedindexchanged="rdlstCancellOptions_SelectedIndexChanged">
          <asp:ListItem Value="cancelall" Selected="True">Cancel ALL Digital Distribution:</asp:ListItem>
          <asp:ListItem Value="canceldotcom">Cancel CD Baby ONLY:</asp:ListItem>
          <asp:ListItem Value="partnercancellations">Cancel From Specific Partners:</asp:ListItem>
        </asp:RadioButtonList>
      </fieldset>
    </asp:Panel>

    <asp:Panel runat="server" ID="pnlChecks"  CssClass="partner">
    </asp:Panel>
  </ContentTemplate>
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="rdlstCancellOptions" EventName="SelectedIndexChanged"/>
  </Triggers>
</asp:UpdatePanel>

CodeBehind: (Я просто публикую метод Event, если вы хотите увидеть больше, просто спросите:)

protected void rdlstCancellOptions_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (rdlstCancellOptions.SelectedValue == "partnercancellations")
            {
                pnlChecks.Visible = true;
                updpnlDDCancelPartnerOpts.Update();
            }
        }

Debuggin ':

Я обернул каждый (элемент управления RLB и панель pnlChecks) в отдельные UpdatePanels, я использовал триггеры и не использовал их, почти со всеми комбинациями AutoPostBack.

Больше всего, хотя, когда для функции события установлена ​​точка останова, она достигает ее, выполняет итерацию по ней и затем возвращает вас на страницу - без обновления и установки панели pnlChecks в видимое состояние.

ScriptManager включен в MasterPage.

Я знаю, что, вероятно, опускаю полчища информации.Однако уже поздно, и после 17 часов рабочего дня (не все 17 часов были потрачены на это) я больше не могу заставить свои глаза смотреть на экран компьютера.

Поэтому, пожалуйста, если естьвсе (что, скорее всего, очевидно), что мне не хватает, не стесняйтесь поделиться.+ миллион интернет всем!

Koohoy0x

Ответы [ 2 ]

1 голос
/ 23 августа 2011

Попробуйте это:

<asp:Panel runat="server" ID="pnlChecks" Visible="false" CssClass="partner"> 
     Show me
</asp:Panel> 

Ваш код в порядке, но на панели нечего показывать, она уже видна:)

0 голосов
/ 23 августа 2011

Ответ найден. Параметр, используемый для заполнения источника данных, был локальным для другого метода, возвращая, таким образом, ноль в список флажков. Отладка с использованием Count мы выяснили, что данные даже не генерируются. Аякс работает нормально, однако. Спасибо всем за ваш ответ и время.

...