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?

Foi útil?

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.

  1. 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.
  2. 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:

  1. Se livrar do iframe e usar um painel. Isto irá colocar os dois no mesmo pedido, e capaz de encontrar o outro.
  2. (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.
  3. 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top