Получить Pane.ID из динамически создаваемой аккордеонной панели, когда аккордеон SelectedIndexChanged - PullRequest
0 голосов
/ 29 января 2019

Я был в этом в течение нескольких дней без успеха.У меня есть аккордеонная панель, которая создается динамически.Одним из элементов на панели аккордеона является панель.Панели дали идентификатор записи в базе данных, которая заполняет эту панель в аккордеоне.Например, если бы я создавал аккордеон для каждого из 50 штатов, paneID представлял бы порядок допуска штатов (т.е. Делавэр, Pane.ID = "Pane_1", Нью-Джерси, Pane.ID = "Pane_3", Гавайи,Pane.ID = "Pane_50" и т. Д.)

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

        function pageLoad() {

        $find('<%= Accordion1.ClientID %>_AccordionExtender').add_selectedIndexChanged(
    accordion_selectedIndexChanged);
    };

    function accordion_selectedIndexChanged(sender, args) {
        var sinx = sender.get_SelectedIndex();
        alert(sinx);
    }

Это работает, потому что он срабатывает, когда я выбираю панель Accordion.Я не знаю, как получить Pane.ID с этого момента в функции accordion_selectedIndexChanged.

1 Ответ

0 голосов
/ 30 января 2019

Сначала я хочу поблагодарить @zgood.Хотя я не нашел то, что искал в методах, это было то, что я не нашел.Я обнаружил, что не могу видеть идентификатор панели, НО я мог видеть идентификатор заголовка.Используя информацию в следующих ссылках, я смог разработать решение: Передать значение переменных Javascript в C # Выбранный аккордеоном указатель Изменить содержание Как поймать аккордеонную панель Выберите событие

Вот общие шаги:

  • Создано скрытое поле
  • Создано скрытая кнопка
  • Захвачено изменение аккордеона
  • Передал выбранный индекс в скрытое поле и затем вызвал событие щелчка скрытых кнопок
  • Поиск идентификатора заголовочного контейнера в коде позади.

Вот код aspx:

function pageLoad() {
    $find('<%= Accordion1.ClientID %>_AccordionExtender').add_selectedIndexChanged(accordion_selectedIndexChanged);
};

function accordion_selectedIndexChanged(sender, args) {
    var control_clientId;
    var sinx = sender.get_SelectedIndex();
    if (sinx > -1) {
        var hdnfldVariable = document.getElementById('<%=hdnfldVariable.ClientID %>');
        hdnfldVariable.value = sinx;
        document.getElementById('LogEntry').click();                
    }
}

<asp:HiddenField ID="hdnfldVariable" runat="server" />
<asp:Button ID="LogEntry" runat="server" ClientIDMode="Static" OnClick="LogEntry_Click" />

А вот код:

 protected void LogEntry_Click(object sender, EventArgs e)
{
   if (hdnfldVariable.Value != "")
   {
      int i = int.Parse(hdnfldVariable.Value);
      string id = Accordion1.Panes[i].HeaderContainer.ID;
      //Do Something here
   }
}
...