О событии изменения для динамически создаваемого выпадающего списка VB.NET

StackOverflow https://stackoverflow.com/questions/772672

Вопрос

У меня есть веб-сайт, где пользователю требуется добавлять и удалять заголовки с главной страницы.Заголовки хранятся в базе данных со столбцом под названием "Отображать" (true или false), который определяет, будут ли отображаться заголовки.Я хочу, чтобы у пользователя была возможность добавлять или удалять заголовки с главной страницы, поэтому создал другую страницу, которая создает таблицу всех заголовков вместе с выпадающим списком, содержащим "Включить" и "отключить".Я хочу, чтобы эти выпадающие списки работали, когда пользователь изменяет значение в выпадающем списке, база данных будет обновлена.Только я не могу найти, как указать в выпадающих списках событие изменения.

Есть какие-нибудь идеи?Правильно ли я поступаю или есть лучший способ сделать это?

Это было полезно?

Решение

Во-первых, чтобы выполнить ваш фактический запрос Вы бы установили для выпадающих списков значение autopostback и добавили обработчик для получения значения и обновления данных, Т.е. (хотя, как минимум, ваши выпадающие списки будут находиться в повторителе или datagrid)

    Private Sub SetupDropdowns()
        Dim pDropDown As New DropDownList
        pDropDown.Items.Add("Yes")
        pDropDown.Items.Add("No")
        pDropDown.AutoPostBack = True
        AddHandler pDropDown.SelectedIndexChanged, AddressOf pDropDown_SelectedIndexChanged
    End Sub

    Private Sub pDropDown_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim value As String = CType(sender, DropDownList).SelectedValue
'Do something with value
    End Sub

Более простой способ, если вы обращаетесь к SQL напрямую, - это использовать datagrid и привязать его к вашему SQL-запросу.

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

Первый;лично я бы использовал флажки для предоставления пользовательского интерфейса для значения true/false.Вы можете справиться с этим двумя способами:либо вы используете элементы управления ASP.NET (<asp:CheckBox .../>) или простые элементы управления HTML (<input type="checkbox" .../>).

В случае использования элементов управления ASP.NET вы можете просто дважды щелкнуть элемент управления (в представлении «Дизайн»), чтобы создать обработчик событий для события CheckedChanged.В случае использования элемента ввода HTML вам необходимо будет обработать событие onclick на стороне клиента с помощью JavaScript и заставить JavaScript выполнить вызов AJAX или аналогичный, чтобы сервер мог обновить базу данных.Я бы сказал, что подход ASP.NET проще.

Скорее всего, самый простой способ для этого — просто использовать DataGrid, после чего вы сможете легко обработать событие.

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

В код, в котором вы создаете раскрывающиеся списки, добавьте это:

''// You already have this code...

Dim oDropDown as New DropDown

''// Whatever other declarations you need...

AddHandler oDropDown.SelectedIndexChanged, _ 
AddressOf oDropDown_SelectedIndexChanged

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

Public Sub oDropDown_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    ''// Do whatever you need to do here

    ''// I sometimes do this to make code manipulation easier:
    Dim _sender as DropDown = CType(sender, DropDown)

End Sub

Надеюсь, это поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top