• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

freaklori

[Asp.net 2.0] CheckBoxLists

33 mensagens neste tópico

Boas, estou com uma pequena grande duvida.. é o seguinte...

Eu estou adicionar dinamicamente varias checklistbox ao webform conforme foi seleccionado anteriormente...

o problema é que eu quero associar um evento CHECKED a essas mesmas checkboxs... isto tudo em runtime...

Ja ouvi falar em Raise Events,Add Handlers.. alguem me pode ajudar??

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Podes adicionar o evento através do AddHandler.

Exemplo:

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim cb1 As New CheckBox
        With cb1
            .Text = "Check1"
            .AutoPostBack = True
        End With


        Dim cb2 As New CheckBox
        With cb2
            .Text = "Check2"
            .AutoPostBack = True
        End With

        AddHandler cb1.CheckedChanged, AddressOf cbCheckedChanged
        AddHandler cb2.CheckedChanged, AddressOf cbCheckedChanged

        Panel1.Controls.Add(cb1)
        Panel1.Controls.Add(cb2)

    End Sub

    Sub cbCheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim cb As CheckBox = DirectCast(sender, CheckBox)
        Response.Write(String.Format("CheckBox: {0}, Estado: {1}", cb.Text, cb.Checked))
    End Sub

End Class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nao funciona...


    Protected Sub bCarregarLabs_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bCarregarLabs.Click

  'Criar um Check List Com os Labs
            Dim C As New CheckBoxList
            'C.ID = P.ID & "CL" & i
            C.AutoPostBack = True
            AddHandler C.SelectedIndexChanged, AddressOf IndexChange
End Sub
    Private Sub IndexChange(ByVal sender As Object, ByVal e As System.EventArgs)
Msgbox("OLA")
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O teu exemplo funciona perfeitamento... mas o que estou a tentar fazer nao funciona... estranho.. apesar de ser uma CheckList eu estou associar o Adicionar o Handler associado ao SeletecIndexChange... uma manha nisto... :/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nao funciona...

Mas tu não está a interir o teu controlo (que criaste) na página. Já tens a CheckBoxList na página, é isso ?

É que dinamicamente funciona bem:

Partial Class _Default
    Inherits System.Web.UI.Page

    Private c As CheckBoxList

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim item1 As New ListItem("aaa")
        Dim item2 As New ListItem("bbb")
        Dim item3 As New ListItem("ccc")
        Dim item4 As New ListItem("ddd")

        c = New CheckBoxList
        c.Items.AddRange(New ListItem() {item1, item2, item3, item4})
        c.AutoPostBack = True

        AddHandler c.SelectedIndexChanged, AddressOf IndexChanged
        Panel1.Controls.Add(c)

    End Sub

    Sub IndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        For Each item As ListItem In Me.c.Items
            If item.Selected Then
                Response.Write(item.Text.ToString & "<br/>")
            End If
        Next

    End Sub

End Class

Se já tiveres a CheckBoxList ná página é só ires ao evento SelectedIndexChanged e usares o código que precisas. Só tens de colocar o AutoPostBack  = True.

PS: Desculpa mas não li bem e pensei que era CheckBox e não CheckBoxList  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O teu exemplo funciona perfeitamento... mas o que estou a tentar fazer nao funciona... estranho.. apesar de ser uma CheckList eu estou associar o Adicionar o Handler associado ao SeletecIndexChange... uma manha nisto... :/

Aprende-se muita coisa à cabeçada :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nao.. eu estou a criar os controles dinamicamente... um exemplo

DropList

1

2

3

4

Conforme o seleccionado... PostBack

Apresenta X grupos de CheckListBoxs

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o teu exemplo..

troquei as lista que tenho por checkboxs e nao funciona... :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

troquei as lista que tenho por checkboxs e nao funciona... :S

Já não entendo outra vez! Mas estás a usar checkbox ou checkboxlists?

Mostra lá o código que tens.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estou a usar Checkboxlist


Protected Sub bCarregarLabs_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bCarregarLabs.Click
        For i As Integer = 1 To 4

                      'Criar um Check List Com os Labs
            Dim C As New CheckBoxList
            C.ID = P.ID & "CL" & i
            C.AutoPostBack = True
            'C.Attributes.Add("OnSelectedIndexChanged", "Check")
Carregar_CheckList(C, "SELECT Designacao, CodEmpresa FROM Empresas ORDER BY Designacao", "Designacao", "CodEmpresa")
            AddHandler C.SelectedIndexChanged, AddressOf ItemChecadoAlterado

           

            'Adicionar ao Panel 
            P.Controls.Add(C)
            'Adicionar ao PlaceHolderLabs
            ConteudoLabs.Controls.Add(P)

        Next

    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

    Sub ItemChecadoAlterado(ByVal sender As Object, ByVal e As System.EventArgs)
    Msgbox("OLA")
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vamos lá ver se eu entendo: tu crias 4 Checkboxlist e queres quando seleccionas um item crie uma nova Checkboxlist, correcto ?

E o Carregar_CheckList está correcto ? E o que não funciona exactamente ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nao...

O q ue pretendo é quando clico numa determinado valor da Checklistbox... ele me crie outra checklistbox mas com a informaçao limitada aquela escolha da checklistbox anterior...

Ou seja.. um exemplo

Tenho 2 CheckLisbox

[C1]

[C2]

Clico na um item da checklistbox do [C1]

e iremos ter

[C1] [C11]

[C2]

A [C11] Foi carregada apartir de um criterio seleccionado na [C1]

O problema aqui é que a [C1], [C2]... ate podem ser 10 sao carregadas atraves de uma droplist que diz... quero 1,2,4,5,6, Checklistbox

O objectivo final será

[DL] -> Quando Seleccionada uma Opçao Crias as CheckListbox

--------------

[C1][C11]

..

..

...

[C20][C21]

Quando Checo de uma das CheckListbOxs do lado esquerdo.. ira ser carregada uma outra Checklistbox ao lado com a informação

seleccionada da Checklistbox do lado esquerdo

Percebeste? Sei que é confuso...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é como eles sao geradas em run-time nao consigo associar o evento do SeletedIndexChanges nas Checklistbox do lado esquerdo.. para quando um ListItem for checado ele criar me uma checklisbox do lado direito....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estranho ... comigo funciona bem !

Não estás a "esconder" código ? Não estás a criar isso dentro de um "If Not Page.IsPostBack Then " ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nao.. mas tenho If Not IsPostBack

Mas isso é so para carregar a pagina...

vou tentar sem isso

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na mesma... mostra me como fizeste

Ok, já testei e já entendi.

Quando tu crias as checkboxes dinamicamente e seleccionas um item ele vai fazer o post back da página e a página fica sem informação e sem detectares o click. Estás a usar AJAX ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exacto... mas nao estou a usar ajax... sabes de alguma solução?? posso implementar a tecnologia ajax!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sem ajax uma solução muito simples é adicionares as CheckBoxLists à página sem itens (não fica visivel) e não dinamicamente. Depois preenches os dados quando seleccionas a dropdownlist e no evento SeletedIndexChange de cada uma colocas o código para as novas CheckBoxLists.

Assim já funciona.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora