Frage

Ich habe eine Seite, die ein iframe hat

Von einem der Seiten innerhalb des iframe Ich will zurück schauen und einen Panel auf der Standardseite unsichtbar machen, weil es überschatt ein Popup

Ich habe versucht, Parent.FindControl verwenden, aber es scheint nicht zu funktionieren. Ich bin sicher, ich die richtige ID in der Findcontrol, weil ich Firebug verwendet, um die Platte zu inspizieren und ich kopierte die ID von dort

Wer weiß, was mir fehlt?

War es hilfreich?

Lösung

Ich habe nicht ganz folgen, Ihr Problem, aber ich werde mein Bestes nehmen.

Es klingt wie Sie eine ASP.NET-Seite haben, die ein iframe in ihm hat, die auf einem anderen ASP.NET-Seite verweist, und in der Seite, die von der iframe angefordert wurde wollen Sie die Sichtbarkeit des Elements ändern enthält in die Seite, die das iframe enthält.

Wenn mein Verständnis des Problems richtig ist, dann haben Sie einige etwas unangenehmen Probleme hier.

  1. Was auf Browserebene tatsächlich passiert wird die erste Seite wird geladen, und diese Seite hat darin einen Iframe, der eine zweite Anforderung an den Server macht.
  2. Diese zweite Anforderung kann Ihre Steuerung nicht Findcontrol, weil es nicht in der gleichen Seite ist, und ist während dieser Anforderung nicht mehr am Leben.

So einige Alternativen haben sich hier:

  1. Holen des iframe befreien und ein Panel verwenden. Dies wird sie beide in der gleichen Anforderung gestellt, und in der Lage, einander zu finden.
  2. (Zusätzlich) Wenn Sie das tun Sie gehen zu wollen, verwenden Page.FindControl () nicht Parent.FindControl () als Findcontrol-Methode sucht nur durch das Kind Kontrolle Sammlung Kontrolle, und ich nehme Ihre Kontrolle woanders wird auf der Seite.
  3. Auf der Clientseite in der iframe könnte Sie einige Javascript-Code verwenden, die äußere Seite des DOM, den Zugriff auf und die Sichtbarkeit von dort eingestellt.

Andere Tipps

Übergeordnetes Dokument:

<body>
    <input type="text" id="accessme" value="Not Accessed" />
    ...
</body>

Dokument in iframe:

<head>
    ...
    <script type="text/javascript">
        function setValueOfAccessme()
        {
            window.parent.document.getElementById("accessme").value = "Accessed";
        }
    </script>
</head>
<body onload="setValueOfAccessme();">
</body>

Das Dokument innerhalb des iframe greift auf die auf dem document object window object Last auf und verwendet die getElementId() Funktion den Wert des Eingangs im Inneren des Körpers des Stammdokuments festlegen.

Für den Anfang Findcontrol ist keine Funktion in Javascript.

Alternativ ist hier eine weitere hilfreich Steuerroutine ...

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top