Pergunta

Eu tenho um site onde o usuário requer para adicionar e remover destaque na página principal. As manchetes são armazenados em um banco de dados com uma coluna intitulada 'Monitor' (verdadeiro ou falso), que decide se as manchetes aparecer. Eu quero que o usuário tenha a capacidade de adicionar ou remover manchetes da página principal, por isso criamos uma outra página que cria uma tabela de todas as manchetes juntamente com uma lista suspensa contendo 'Enable' e 'desativar' para baixo. Quero essas listas drop down para trabalhar, quando o usuário altera o valor na lista suspensa o banco de dados será atualizado. Só que eu não consigo encontrar como dar as listas suspensas uma sobre evento de alteração.

Todas as idéias? Eu vou sobre este o caminho certo ou se existe uma maneira melhor de fazer isso?

Foi útil?

Solução

Em primeiro lugar, para fazer o seu pedido real Você deve definir os menus suspensos para autopostback, e adicionar um manipulador para obter o valor e atualizar os dados, IE (embora no mínimo seus dropdowns estaria em um repetidor, ou 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

Uma maneira mais fácil, se você está acessando SQL diretamente é usar uma grade de dados e vincular-lo para sua consulta SQL.

Outras dicas

Em primeiro lugar; pessoalmente eu usaria caixas de seleção para fornecer uma interface de usuário para um valor verdadeiro / falso. Você pode lidar com isso de duas maneiras: ou você usa controles ASP.NET (). Ou controles HTML simples ()

No caso de usar os controles do ASP.NET, você pode simplesmente clicar duas vezes sobre o controle (na opinião do projeto), a fim de ter um manipulador de eventos para o evento CheckedChanged a ser criado para você. No caso de utilização de um elemento de entrada HTML, você terá que lidar com o evento onclick no lado do cliente usando JavaScript, e ter o JavaScript fazer uma chamada de AJAX ou tão semelhantes que o servidor pode atualizar o banco de dados. Eu diria que a abordagem ASP.NET é mais simples.

A maioria método provável que você mais fácil para isso é simplesmente usar um DataGrid, você pode manipular o evento facilmente.

Como alternativa, desde que você está simplesmente fazendo um "show" ou a opção "Ocultar", você poderia usar apenas botões, que pode fornecer uma interface de usuário melhor. (Eu acho isso verdade devido ao deslocamento acidental de drop-down lista de itens com um mouse roda de rolagem em alguns navegadores)

No código onde você cria seus menus suspensos, acrescentar o seguinte:

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

Dim oDropDown as New DropDown

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

AddHandler oDropDown.SelectedIndexChanged, _ 
AddressOf oDropDown_SelectedIndexChanged

Normalmente, você adiciona um menu suspenso ao seu projeto a partir da caixa de ferramentas, e você pode usar o menu suspenso em CodeView para selecionar o evento SelectedIndexChanged. Nós temos que fazer isso manualmente, neste caso, de modo criar sua sub-rotina:

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

Espero que ajude!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top