Я просмотрел множество других тем, которые имеют аналогичную проблему, но не смог решить мою проблему. Я использую следующий код для своего поля со списком:
<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.
Может ли кто-нибудь посоветовать?
Я считаю, что вы хотите, основываясь на том, как у вас структурирован код в вашем другой пост, это добавить обработчик событий в поле со списком, чтобы при изменении выбранного индекса вы проверяли выбор.
Этот сценарий описан в документация здесь, но в основном вы хотите сделать следующее:
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
.
<sq8:ComboBox runat = "server" ID = "cboAgree"
onclientselectedindexchanged = "onSelectedIndexChanged">
Sys.Application.add_load(FormLoad) function FormLoad() { onSelectedIndexChanged(true); }
Это то, что у меня есть для загрузки формы.
Хммм, так что сообщение об ошибке говорит мне, что eventArgs
не определено. Если вы проверите отображаемый HTML-код, отображается ли ваш ComboBox как элемент управления Select
с некоторыми элементами Option
внутри него?
Если вышесказанное верно, то должно работать следующее: pastebin.com/cc4DfA61.
Привет Мэтт, еще раз спасибо за помощь! Я попробовал код, который вы дали, и не получил эту ошибку.. Uncaught TypeError: Cannot read property 'undefined' of undefined
Я проверил элемент HTML, когда форма запущена, и он показывает это. pastebin.com/jmqN89DE
Очень интересно, я никогда раньше не использовал элементы управления Telerik, но это будет что-то глупое. Можете ли вы загрузить пример проекта, который воспроизводит ошибку, которую я могу запустить на своем компьютере, чтобы посмотреть, что происходит?
Я не думаю, что смогу. Я использую фреймворк Cora Sequence. Проект — это процесс, хранящийся внутри фреймворка, и его нельзя запустить за его пределами.
Я загрузил Примеры ASP.NET Ajax с сайта Telerik после просмотра эта документация, который, когда я щелкнул «Обзор клиентского программирования», вернул меня к Телерик документация. Я знаю, что вы пробовали этот метод раньше и получали неопределенную ошибку при попытке вызвать get_item
. После загрузки образцов код здесь у меня получилось следующее.
@ Адам, я не совсем уверен, что еще предложить, извините. Попробуйте использовать функцию отладчик или обратитесь в службу поддержки здесь или здесь.
Нет проблем, @Matt! Спасибо за вашу помощь. Как я уже упоминал, один из ваших методов сработал частично, поэтому я могу попробовать и развить его! Спасибо еще раз! :)
Привет Мэтт, спасибо за объяснение! Это работает, но когда я проверяю страницу, я получаю следующую ошибку
Uncaught TypeError: Cannot read property 'get_item' of undefined
Кроме того, я думаю, что это может быть связано с загрузкой формы.. значение по умолчанию в раскрывающемся списке — «Согласен», поэтому изначально сетка скрыта, когда я измените его на «Не согласен», но если я поменяю его обратно на «Согласен», ничего не произойдет. Я думаю, что может быть, где ошибка происходит? Есть ли что-нибудь, что я могу добавить в код javascript, который поможет с этим? покажу что у меня уже есть..