Criar uma matriz de estados VB+ASPX (IMPORTANTE)

Antes de mais Boa Tarde.
Estou a desenvolver uma pagina em VB+ASP.Net e gostaria de fazer uma matriz de estados.
Imaginem um hotel, e quero por os quartos ocupados a Vermelho e os livres a verde.
Algo deste género:

http://imageshack.us/photo/my-images/259/semttuloppg.jpg/
Com botões, esta fora de questao… porque teria de fazer 300 :s

Se houver algo em jquery, acho que tambem me dará jeito.

Obrigado.

Pessoal é algo deste genero:

  [code]  Dim x As Integer
    Dim y As Integer
    For x = 0 To 20
        For y = 0 To 10
            Dim botao As New Button
            With botao
                .Visible = True
                .Text = "Lugar" & x & y & vbCrLf

            End With
           
            Me.Controls.Add(botao)
        Next
    Next
End Sub[/code]

Com labels, funciona lindamente… Mas com botoes, dá um erro na pagina muito estranho O controlo ‘ctl02’ de tipo ‘Button’ tem de ser colocado dentro de uma marca form com runat=server.

Mas não ter qualquer logica o runat=server, visto estar num ficheiro aspx.vb.

um botão quando renderizado em HTML deverá ficar dentro das tags

o Visual Studio quando pré renderiza a página percebe que esta fora e te retorna o erro…

você pode criar um método usando seu código…

e no ASPX você o chama onde deseja, …dentro das tags

Ola Rafaela,

Na verdade tem varios problemas. Primeiramente, vc nao esta definindo um ID para os seus botoes e esta deixando o ASP.NET se encarregar de criar os IDs para voce. Por isso ele cria com esses id estranhos tipo: ‘ctl02’

Dim x As Integer  
      Dim y As Integer  
      For x = 0 To 20  
          For y = 0 To 10  
              Dim botao As New Button  
              With botao  
                  .Visible = True  
                  .Text = "Lugar" & x & y & vbCrLf  
  
              End With  
               
              Me.Controls.Add(botao)  
          Next  
      Next  
  End Sub  

O que vc poderia fazer eh :

  1. Definir um id do botao, por exemplo ID=“ButtonQuarto”. Fazendo assim vc vai ter um problema, ID iguais. O que vc pode fazer eh append as variaveis
    x e y no ID, por exemplo.

2 Seta a propriedade do botao ClientIDMode para ClientIDMode=ClientIDMode.Static, isso vai assegurar que depois que a pagina for renderizada, os IDs nao vao ser alterados. Isso vale se vc adicionar os botoes em paginas que possuem Master Pages, que vc vai ter que adicionar os botao a um ContentPlaceHolder.

Dessa forma vc vai ter sempre os mesmos IDs tanto no server-side como client-side. Ai fica facil saber qual botao foi clicado e qual botao vc precisa alterar as propriedades.

//Daniel

[quote=windsofhell]Ola Rafaela,

Na verdade tem varios problemas. Primeiramente, vc nao esta definindo um ID para os seus botoes e esta deixando o ASP.NET se encarregar de criar os IDs para voce. Por isso ele cria com esses id estranhos tipo: ‘ctl02’

Dim x As Integer  
      Dim y As Integer  
      For x = 0 To 20  
          For y = 0 To 10  
              Dim botao As New Button  
              With botao  
                  .Visible = True  
                  .Text = "Lugar" & x & y & vbCrLf  
  
              End With  
               
              Me.Controls.Add(botao)  
          Next  
      Next  
  End Sub  

O que vc poderia fazer eh :

  1. Definir um id do botao, por exemplo ID=“ButtonQuarto”. Fazendo assim vc vai ter um problema, ID iguais. O que vc pode fazer eh append as variaveis
    x e y no ID, por exemplo.

2 Seta a propriedade do botao ClientIDMode para ClientIDMode=ClientIDMode.Static, isso vai assegurar que depois que a pagina for renderizada, os IDs nao vao ser alterados. Isso vale se vc adicionar os botoes em paginas que possuem Master Pages, que vc vai ter que adicionar os botao a um ContentPlaceHolder.

Dessa forma vc vai ter sempre os mesmos IDs tanto no server-side como client-side. Ai fica facil saber qual botao foi clicado e qual botao vc precisa alterar as propriedades.

//Daniel[/quote]

Muito Obrigado. Eu essa parte tenho feita, apenas nao coloquei o codigo :slight_smile:

[quote=douglaskd]um botão quando renderizado em HTML deverá ficar dentro das tags

o Visual Studio quando pré renderiza a página percebe que esta fora e te retorna o erro…

você pode criar um método usando seu código…

e no ASPX você o chama onde deseja, …dentro das tags [/quote]

E se colocar com as label’s e tentar por como link? (labellink)

Mas se declarar no VB, aparece sempre no final da tela…

antes de mais, Obrigado!

[quote=RafaelaG][quote=windsofhell]Ola Rafaela,

Na verdade tem varios problemas. Primeiramente, vc nao esta definindo um ID para os seus botoes e esta deixando o ASP.NET se encarregar de criar os IDs para voce. Por isso ele cria com esses id estranhos tipo: ‘ctl02’

Dim x As Integer  
      Dim y As Integer  
      For x = 0 To 20  
          For y = 0 To 10  
              Dim botao As New Button  
              With botao  
                  .Visible = True  
                  .Text = "Lugar" & x & y & vbCrLf  
  
              End With  
               
              Me.Controls.Add(botao)  
          Next  
      Next  
  End Sub  

O que vc poderia fazer eh :

  1. Definir um id do botao, por exemplo ID=“ButtonQuarto”. Fazendo assim vc vai ter um problema, ID iguais. O que vc pode fazer eh append as variaveis
    x e y no ID, por exemplo.

2 Seta a propriedade do botao ClientIDMode para ClientIDMode=ClientIDMode.Static, isso vai assegurar que depois que a pagina for renderizada, os IDs nao vao ser alterados. Isso vale se vc adicionar os botoes em paginas que possuem Master Pages, que vc vai ter que adicionar os botao a um ContentPlaceHolder.

Dessa forma vc vai ter sempre os mesmos IDs tanto no server-side como client-side. Ai fica facil saber qual botao foi clicado e qual botao vc precisa alterar as propriedades.

//Daniel[/quote]

Muito Obrigado. Eu essa parte tenho feita, apenas nao coloquei o codigo :slight_smile:
[/quote]

Sim, eu sei que vc fez isso, eu soh coloquei o seu codigo para mostrar que vc nao esta definindo Ids pros botoes que vc esta criando, e vai ser impossivel para voce identifica-los num javascript por exemplo. Vc vai ter que colocar ClienteIDMode = Static e definir um ID.

//Daniel