Событие On Change для динамически создаваемого списка Drop Dow VB.NET - PullRequest
0 голосов
/ 21 апреля 2009

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

Есть идеи? Я иду по этому пути правильно или есть лучший способ сделать это?

Ответы [ 4 ]

1 голос
/ 21 апреля 2009

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

    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 напрямую, это использовать сетку данных и привязать ее к вашему запросу SQL.

0 голосов
/ 21 апреля 2009

В коде, где вы создаете выпадающие списки, добавьте:

''// 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

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

0 голосов
/ 21 апреля 2009

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

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

0 голосов
/ 21 апреля 2009

Во-первых; лично я бы использовал флажки для предоставления пользовательского интерфейса для значения true / false. Вы можете справиться с этим двумя способами: либо с помощью элементов управления ASP.NET (), либо с простых элементов управления HTML ().

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

...