Adicionando e Removendo Itens entre dois ListBox - ASP .NET

Informática

31/01/2009

Por: Sueli Mitie Joboji

    Neste artigo mostraremos um exemplo fácil de como adicionar/remover itens entre dois ListBox.

    Primeiramente arraste dois ListBox (dentro da Toolbox-> Standard). Em nosso exemplo, o primeiro ListBox conterá todos os professores disponíveis para a turma selecionada. Já o segundo ListBox conterá os professores selecionados para a turma. Para isso, carregue os dados em cada um deles (através de um SqlDataSource ou de um ObjectDataSource).
    Acrescente dois Buttons para realizar as operações de troca.

Dê um duplo clique no primeiro botão e adicione o código abaixo. Neste exemplo, criamos uma lista ordenada com os itens que foram selecionados. Depois, adicionamos aos itens já existentes, ou seja, a lista continua ordenada. E por fim, carregamos no ListBox.

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim lista_ordenada As New SortedList()

        While (list_disp.Items.Count > 0 And (Not list_disp.SelectedItem Is Nothing))

            Dim selectedItem As ListItem = list_disp.SelectedItem
            selectedItem.Selected = False

            lista_ordenada.Add(selectedItem.Text, selectedItem.Value)

            list_disp.Items.Remove(selectedItem)

        End While

        Dim li As ListItem
        For Each li In list_sel.Items
            lista_ordenada.Add(li.Text, li.Value)
        Next

        list_sel.Items.Clear()

        list_sel.DataSourceID = ""
        list_sel.DataSource = lista_ordenada
        list_sel.DataTextField = "key"
        list_sel.DataValueField = "value"
        list_sel.DataBind()
    End Sub

Dê um duplo clique no segundo botão:

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim li As ListItem
        Dim lista_ordenada As SortedList = New SortedList()

        While (list_sel.Items.Count > 0 And Not list_sel.SelectedItem Is Nothing)

            Dim selectedItem As ListItem = list_sel.SelectedItem
            selectedItem.Selected = False

            lista_ordenada.Add(selectedItem.Text, selectedItem.Value)

            list_sel.Items.Remove(selectedItem)

        End While

        For Each li In list_disp.Items
            lista_ordenada.Add(li.Text, li.Value)
        Next

        list_disp.Items.Clear()

        list_disp.DataSourceID = ""
        list_disp.DataSource = lista_ordenada
        list_disp.DataTextField = "key"
        list_disp.DataValueField = "value"
        list_disp.DataBind()
    End Sub
End Class

Pronto! Agora você já pode adicionar/remover itens de um listbox para outro e os itens permanecerão ordenados!

Esta apresentação reflete a opinião pessoal do autor sobre o tema, podendo não refletir a posição oficial do Portal Educação.


Colunista Portal - Educação

por Colunista Portal - Educação

O Portal Educação possui uma equipe focada no trabalho de curadoria de conteúdo. Artigos em diversas áreas do conhecimento são produzidos e disponibilizados para profissionais, acadêmicos e interessados em adquirir conhecimento qualificado. O departamento de Conteúdo e Comunicação leva ao leitor informações de alto nível, recebidas e publicadas de colunistas externos e internos.

Portal Educação

UOL CURSOS TECNOLOGIA EDUCACIONAL LTDA, com sede na cidade de São Paulo, SP, na Alameda Barão de Limeira, 425, 7º andar - Santa Cecília CEP 01202-001 CNPJ: 17.543.049/0001-93