Recuperar controles de uma página com master page.
Olá a todos.
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?
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
Curtidas 0
Respostas
Hal9000
01/06/2008
Nãi é possível passei a manhã no google e nada! Como eu consigo fazer um for each para pegar todos os controles que estão na minha página com Master Page? Já use Master, ContentPlaceHolder! Tudo! Alguém sabe?!?! :cry:
GOSTEI 0
Ricardo Silva
01/06/2008
veio....
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
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
GOSTEI 0
Hal9000
01/06/2008
Então. esse lance de mudar o nome dos controles eu já to por dentro.
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:
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 :(
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 :(
GOSTEI 0
Ricardo Silva
01/06/2008
se eu não me engano.. vc vai ter q colocar outro lupe dentro desse foreach. tipo assim... na sua pagina ele vai encontar um controle que eh o ContentPlaceHolder, os controles estão dentro deles.
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
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
GOSTEI 0
Hal9000
01/06/2008
Testei sua idéia Rica mas o tipo Control não é um Array de controles
entao a linha:
For Each Ctr As Control In Controle dá pau
:(
Alguma idéia nova? Eu continuo procurando...
entao a linha:
For Each Ctr As Control In Controle dá pau
:(
Alguma idéia nova? Eu continuo procurando...
GOSTEI 0
Ricardo Silva
01/06/2008
entaum no lugar de for each faz simplesmente um for...
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....
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....
GOSTEI 0
Hal9000
01/06/2008
Olha só testei com um for ´simples´
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...
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...
GOSTEI 0
Hal9000
01/06/2008
Rica.. Resolvi o problema. Vc tinha razão quanto a pesquisar a controles dentro de controles, mas para funcionar tem que usar recursividade.
olha só:
Valeu pela ajuda...
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...
GOSTEI 0
Ricardo Silva
01/06/2008
Ah... muleeeeeque...
é 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...
é 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...
GOSTEI 0
Hal9000
01/06/2008
Rica, segue post para o pessoal do C# num ficar brabo comigo.. rs
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);
}
}
}
GOSTEI 0