Recuperar controles de uma página com master page.
01/06/2008
0
Montei uma rotina no meu sistema que percorre todos os controles de uma pagina e habilita ou desabilita eles ´Enabled´ funcionava que é uma beleza, mas o pessoal do design meteu uma masterpage e agora o código não recupera mais! Alguem sabe como eu faço para referenciar esses controles que agora estão numa página com master page?
Hal9000
Posts
01/06/2008
Hal9000
02/06/2008
Ricardo Silva
qndo vc coloca uma masterPage... os nome do Documentos HTML muda um poquim...
pra descobrir os Novos nome, vc executa o seu projeto e vai no codigo fonte do seu HTML.
provavelmente ele vai estar assim: ctl00_ContentPlaceHolder1_TextBox1, o que muda é o nome do do ContentPlaceHouder que armazena todos os controles
na duvida soh posta
02/06/2008
Hal9000
o meu problema é que preciso de um método genérico que percorra todos os controles da minha página.
eu fiz assim e sem master funciona:
Public Sub DesligaSubmit(ByVal Pagina As Page) For Each Controle As Control In Pagina.Controls If TypeOf Controle Is Button Then Dim Botao As New Button Botao = DirectCast(Controle, Button) Botao.UseSubmitBehavior = False End If Next End Sub
Eu passo a página e quero recuperar os controles, mas na master a coleção de controles vem com um único item. a própria master :(
02/06/2008
Ricardo Silva
Public Sub DesligaSubmit(ByVal Pagina As Page) For Each Controle As Control In Pagina.Controls For Each Ctr As Control In Controle If TypeOf Ctr Is Button Then Dim Botao As New Button Botao = DirectCast(Ctr, Button) Botao.UseSubmitBehavior = False End If Next Next End Sub
não manjo nada de VB mais axo qw ficaria assim, pois fiz algo parecido em C# na facu... ve se da certo e posta ai....
Ah outra dica, é ir debugando e procurando os Objetos ai fica facil
na duvida soh posta
02/06/2008
Hal9000
entao a linha:
For Each Ctr As Control In Controle dá pau
:(
Alguma idéia nova? Eu continuo procurando...
03/06/2008
Ricardo Silva
Public Sub DesligaSubmit(ByVal Pagina As Page) For Each Controle As Control In Pagina.Controls For(int i = 0; i > Controle.count - 1; i++) If TypeOf Controle[i] Is Button Then Dim Botao As New Button Botao = DirectCast(Controle[i], Button) Botao.UseSubmitBehavior = False End If Next Next End Sub
ja... sei meu for ta em C (rsrsrsr) não sei como é em VB
mas creio q seja assim, pois se o componente não for uma coleção o count dele sera 1 logo ele vai pro proximo controle ateh axar uma coleção ai ele netra no for... e sucetivamente.
tenta lah....
03/06/2008
Hal9000
For Each Controle As Control In Pagina.Controls For ind = 0 To Controle.Controls.Count - 1 If TypeOf Controle.Controls(ind) Is Button Then Dim Botao As New Button Botao = DirectCast(Controle.Controls(ind), Button) Botao.UseSubmitBehavior = False End If Next Next
Mas passa batido rs.
Vou tentar passar o ContentPlaceHolder ao invés da página...
Mas só para constar:
o For do VB é bem mais elegante... rs :wink:
For ind = 0 To Controle.Controls.Count - 1
Ok ok.. Os dois fazem a mesma coisa...
Vou testar e volto a postar...
05/06/2008
Hal9000
olha só:
Public Sub DesligaSubmit(ByVal Pagina As Control) For Each Controle As Control In Pagina.Controls If TypeOf Controle Is Button Then Dim Botao As New Button Botao = DirectCast(Controle, Button) Botao.UseSubmitBehavior = False Else ´RECURSIVIDADE AQUI DesligaSubmit(Controle) End If Next End Sub
Valeu pela ajuda...
05/06/2008
Ricardo Silva
é issso ai...
fiquei morrendo de medo de mandar vc usar recurssividade pra vc naum assusta - vai q vc manda eu vazer um exemplo VB (rsrsrs)- mas é isso ai.... vc vez certim.
Parabens...
05/06/2008
Hal9000
public void DesligaSubmit(Control Pagina) { foreach (Control Controle in Pagina.Controls) { if (Controle is Button) { Button Botao = new Button(); Botao = (Button)Controle; Botao.UseSubmitBehavior = false; } else { //RECURSIVIDADE AQUI DesligaSubmit(Controle); } } }
Clique aqui para fazer login e interagir na Comunidade :)