Parent.FindControl () não está funcionando?
-
02-07-2019 - |
Pergunta
Eu tenho uma página que tem um iframe
De uma das páginas dentro do iframe que eu quero olhar para trás e fazer um painel na página padrão invisível porque está ofuscando um popup
Eu tentei usar Parent.FindControl mas não parece estar funcionando. Eu sou positivo tenho a id bem no FindControl porque eu usei Firebug para inspecionar o painel e eu copiei o id de lá
Alguém sabe o que estou ausente?
Solução
Eu não segui completamente o seu problema, mas eu vou tomar o meu melhor tiro.
Parece que você tem uma página ASP.NET, que tem um iframe no que se refere a uma outra página ASP.NET, e em que página que foi solicitada pelo iframe que pretende modificar a visibilidade do item contido no a página que contém o iframe.
Se o meu entendimento de seu problema é correto, então você tem alguns problemas pouco desagradáveis ??aqui.
- O que está realmente acontecendo no nível do navegador é a primeira página é carregada, e que a página tem um iframe nele que está a fazer um segundo pedido para o servidor.
- Este segundo pedido não pode FindControl seu controle, porque não é na mesma página, e não está vivo durante esse pedido.
Então você tem algumas alternativas aqui:
- Se livrar do iframe e usar um painel. Isto irá colocar os dois no mesmo pedido, e capaz de encontrar o outro.
- (Além disso) Quando você fizer isso você vai querer usar Page.FindControl () não Parent.FindControl () como o método FindControl apenas pesquisas por meio de coleta controle filho do controle, e presumo que o seu controle será em outro lugar na página.
- No lado do cliente no iframe você poderia usar algum código javascript para o acesso da página externa DOM, e definir a visibilidade de lá.
Outras dicas
documento pai:
<body>
<input type="text" id="accessme" value="Not Accessed" />
...
</body>
Documento em iframe:
<head>
...
<script type="text/javascript">
function setValueOfAccessme()
{
window.parent.document.getElementById("accessme").value = "Accessed";
}
</script>
</head>
<body onload="setValueOfAccessme();">
</body>
O documento dentro do iframe acessos a document object
no window object
em carga, e usa a função getElementId()
para definir o valor da entrada no interior do corpo do documento pai.
Para começar, FindControl não é uma função em Javascript.
Como alternativa aqui é uma rotina de controle localizar mais útil ...
Public Shared Function MoreHelpfulFindControl(ByVal parent As UI.Control, ByVal id As String) As UI.Control
If parent.ID = id Then Return parent
For Each child As UI.Control In parent.Controls
Dim recurse As UI.Control = MoreHelpfulFindControl(child, id)
If recurse IsNot Nothing Then Return recurse
Next
Return Nothing
End Function