Раскрывающийся список asp.net выбранное событие изменения индекса не срабатывает при нажатии текущего выбранного элемента

Вот проблема с тем, как работает раскрывающийся список. Нет события нажатия на уже выбранный элемент. В коде asp.net за C# или VB единственным событием, которое может быть вызвано, является SelectedIndexChanged. Я видел подобные сообщения, но я не видел вопроса, сформулированного следующим образом.

У меня есть ситуация, когда для целей дизайна я хочу, чтобы в раскрывающемся списке отображались все элементы только при нажатии на поле. Это поле позволит покупателю добавить продукт в существующий список или создать новый список. Я хочу, чтобы в поле изначально было указано: ДОБАВИТЬ В СПИСОК. Но когда пользователь щелкает раскрывающийся список, ДОБАВИТЬ В СПИСОК появляется в раскрывающемся списке, а не в исходном поле!

ДОБАВИТЬ В СПИСОК не имеет функций, поскольку следующие элементы в списке имеют следующие параметры: Создать новый список ; Список А ; Список Б ; и Т. Д.

Я не могу найти способ скрыть ДОБАВИТЬ В СПИСОК в отображаемом раскрывающемся списке.

Если вместо этого я просто использую Создать новый список в качестве первого элемента в моем списке, я не могу выбрать Создать новый список в раскрывающемся списке, так как он уже выбран и будет не запускать событие SelectedIndexChanged.

Должен быть какой-то способ запустить событие при нажатии на уже выбранный элемент, или должен быть какой-то способ скрыть первый элемент от появления в раскрывающемся списке, а также для отображения в поле над списком. выпадающий список

Я попытался привязать событие onclick к раскрывающемуся списку с помощью jquery, а также попробовал событие onchange, но ничего не получилось.

Это что-то для будущего выпуска или у кого-то есть обходной путь?


person Roger    schedule 23.08.2016    source источник
comment
пожалуйста, опубликуйте свой код для справки.   -  person hud    schedule 23.08.2016
comment
Почему бы не выбрать вариант «Выбрать здесь...» в качестве первого выбора в раскрывающемся списке. В событии обратной передачи просто установите SelectedIndex на ноль, и пользователь может выбрать другой вариант, и событие OnSelectedIndexChanged сработает снова.   -  person VDWWD    schedule 23.08.2016
comment
Я не думаю, что вы понимаете, что он никогда не дойдет до события обратной передачи, если пользователь попытается выбрать первый элемент в списке, поскольку он уже был выбран. Я нашел обходной путь, как указано ниже.   -  person Roger    schedule 23.08.2016
comment
Я имею в виду вот так <asp:ListItem Text="Select item..." Value=""></asp:ListItem><asp:ListItem Text="Add to Project" Value="1"></asp:ListItem><asp:ListItem Text="Add to New Project" Value="2"></asp:ListItem>. Теперь пользователю всегда придется выбирать элемент, который не является первым, тем самым вызывая событие. И, оставив первое значение пустым, вы можете добавить RequiredFieldValidator в раскрывающийся список.   -  person VDWWD    schedule 23.08.2016
comment
Я также должен следовать рекомендациям по стилю графического отдела. Мне нужно, чтобы поле отображалось на веб-сайте с четким направлением для пользователя. Отсюда «Добавить в проект» в качестве первого элемента в списке. Теперь, когда пользователь щелкает раскрывающийся список, пользователь должен увидеть доступные параметры, которые должны включать ДОБАВИТЬ в НОВЫЙ ПРОЕКТ (который я изменил на Создать новый проект) и список всех текущих проектов.   -  person Roger    schedule 24.08.2016
comment
Я не хочу, чтобы Select Item снова отображался в списке опций, которые пользователь может щелкнуть. Это не эстетично. Я исправил это, добавив класс к первому элементу, из-за которого он не отображался в отображаемом списке под раскрывающимся списком. Ваше решение работает, но нежелательно, потому что оно дважды отображает первый вариант. Один раз в раскрывающемся списке и один раз в списке под раскрывающимся списком. Но поскольку это выбор по умолчанию, вы не можете щелкнуть его в списке.   -  person Roger    schedule 24.08.2016


Ответы (1)


Поработав над этим полтора дня, я, наконец, нашел решение.

Я не мог добавить стиль непосредственно к элементу списка, но смог добавить класс к отдельному элементу списка. Показано в ВБ:

CSS

.projdropdownclass {
display: none;
}

VB

    Private Sub ProjDropDownList_DataBound(sender As Object, e As EventArgs)            Handles ProjDropDownList.DataBound
    ProjDropDownList.Items(0).Attributes("class") = "projdropdownclass"
End Sub

Дисплей: нет; скрывает первый элемент в раскрывающемся списке.

введите здесь описание изображения

Я все еще думаю, что в раскрывающемся списке в VB и C# должно быть событие щелчка.

Надеюсь, это поможет кому-то еще.

person Roger    schedule 23.08.2016