Получение значения из ComboBox?

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

<sq8:ComboBox runat = "server" ID = "cboAgree"><Items>
<sq8:ComboBoxItem runat = "server" Text = "Agree"></sq8:ComboBoxItem>
<sq8:ComboBoxItem runat = "server" Text = "Disagree"></sq8:ComboBoxItem>
</Items>
</sq8:ComboBox>
<sq:BindableControl runat = "server" TargetControlID = "cboAgree" DataField = "Agreement"></sq:BindableControl>

Я хочу получить выбранное значение («Согласен» или «Не согласен») и использовать его в качестве условия для скрытия/отображения сетки в моей форме:

   if (value == "Disagree") {
  commentsGrid.style.visibility = "visible";
  }else{
  commentsGrid.style.visibility = "hidden";
  } 

Я пробовал несколько вещей, но похоже, что проблема связана с тем, как загружается форма, а поле со списком не имеет значения в этот момент. Я всегда получаю сообщение об ошибке, что мой comboBox "cboAgree" имеет значение null.

Может ли кто-нибудь посоветовать?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
176
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Этот сценарий описан в документация здесь, но в основном вы хотите сделать следующее:

  1. Добавьте следующий блок в ваш существующий javascript:
function onSelectedIndexChanged(sender, eventArgs) 
{
    var item = eventArgs.get_item();

    if (value == "Disagree") {
        commentsGrid.style.display = "block";
    } else {
        commentsGrid.style.display = "none";
    } 
}

Я бы предложил установить свойство display на none и block вместо использования visibility с hidden и visible. Этот ответ описывает различия и объясняет, почему в данном случае вам следует предпочесть использовать свойство display.

  1. Обновите ComboBox, чтобы вызвать новый метод Javascript:
<sq8:ComboBox runat = "server" ID = "cboAgree"
onclientselectedindexchanged = "onSelectedIndexChanged">

Привет Мэтт, спасибо за объяснение! Это работает, но когда я проверяю страницу, я получаю следующую ошибку Uncaught TypeError: Cannot read property 'get_item' of undefined Кроме того, я думаю, что это может быть связано с загрузкой формы.. значение по умолчанию в раскрывающемся списке — «Согласен», поэтому изначально сетка скрыта, когда я измените его на «Не согласен», но если я поменяю его обратно на «Согласен», ничего не произойдет. Я думаю, что может быть, где ошибка происходит? Есть ли что-нибудь, что я могу добавить в код javascript, который поможет с этим? покажу что у меня уже есть..

Adam 30.05.2019 10:12
Sys.Application.add_load(FormLoad) function FormLoad() { onSelectedIndexChanged(true); } Это то, что у меня есть для загрузки формы.
Adam 30.05.2019 10:15

Хммм, так что сообщение об ошибке говорит мне, что eventArgs не определено. Если вы проверите отображаемый HTML-код, отображается ли ваш ComboBox как элемент управления Select с некоторыми элементами Option внутри него?

Matt Stannett 30.05.2019 11:36

Если вышесказанное верно, то должно работать следующее: pastebin.com/cc4DfA61.

Matt Stannett 30.05.2019 11:46

Привет Мэтт, еще раз спасибо за помощь! Я попробовал код, который вы дали, и не получил эту ошибку.. Uncaught TypeError: Cannot read property 'undefined' of undefined

Adam 30.05.2019 12:23

Я проверил элемент HTML, когда форма запущена, и он показывает это. pastebin.com/jmqN89DE

Adam 30.05.2019 12:28

Очень интересно, я никогда раньше не использовал элементы управления Telerik, но это будет что-то глупое. Можете ли вы загрузить пример проекта, который воспроизводит ошибку, которую я могу запустить на своем компьютере, чтобы посмотреть, что происходит?

Matt Stannett 30.05.2019 12:45

Я не думаю, что смогу. Я использую фреймворк Cora Sequence. Проект — это процесс, хранящийся внутри фреймворка, и его нельзя запустить за его пределами.

Adam 30.05.2019 13:09

Я загрузил Примеры ASP.NET Ajax с сайта Telerik после просмотра эта документация, который, когда я щелкнул «Обзор клиентского программирования», вернул меня к Телерик документация. Я знаю, что вы пробовали этот метод раньше и получали неопределенную ошибку при попытке вызвать get_item. После загрузки образцов код здесь у меня получилось следующее.

Matt Stannett 31.05.2019 10:42

@ Адам, я не совсем уверен, что еще предложить, извините. Попробуйте использовать функцию отладчик или обратитесь в службу поддержки здесь или здесь.

Matt Stannett 31.05.2019 10:49

Нет проблем, @Matt! Спасибо за вашу помощь. Как я уже упоминал, один из ваших методов сработал частично, поэтому я могу попробовать и развить его! Спасибо еще раз! :)

Adam 31.05.2019 13:15

Другие вопросы по теме