Parent.FindControl() funktioniert nicht?


1

Ich habe eine Seite, die ein iframe

Von einem der Seiten innerhalb des iframe hat ich unsichtbar zurück und machen eine Platte auf der Standardseite sehen wollen, weil es ein Pop-up

Ich habe versucht, ist überschatt Eltern mit .FindControl, aber es scheint nicht zu funktionieren. Ich bin sicher, ich habe die richtige ID in der findcontrol, weil ich Firebug verwendet, um das Panel zu überprüfen, und ich kopierte die ID von dort

Weiß jemand, was ich vermisse?

3

Ich habe Ihr Problem nicht vollständig verfolgt, aber ich werde mein Bestes geben.

Es klingt, als ob Sie eine ASP.NET-Seite haben, die einen iframe enthält, der auf eine andere ASP.NET-Seite verweist, und auf der von iframe angeforderten Seite die Sichtbarkeit des enthaltenen Elements ändern soll auf der Seite, die den Iframe enthält.

Wenn mein Verständnis für Ihr Problem richtig ist, dann haben Sie hier einige unangenehme Probleme.

  1. Was tatsächlich auf der Browser-Ebene geschieht, ist die erste Seite geladen wird, und diese Seite hat einen iframe, der eine zweite Anfrage an den Server macht.
  2. Diese zweite Anfrage kann FindControl Ihr Steuerelement nicht finden, da es nicht auf derselben Seite ist und während dieser Anfrage nicht aktiv ist.

So haben Sie einige Alternativen hier:

  1. Sie sich von der iframe befreien und ein Panel verwenden. Dies wird sie beide in dieselbe Anfrage versetzen und in der Lage sein, sich gegenseitig zu finden.
  2. (Zusätzlich) Wenn Sie dies tun, wollen Sie Page.FindControl() nicht Parent.FindControl() verwenden, da die FindControl-Methode nur durch die untergeordnete Kontrolle Sammlung des Steuerelements durchsucht, und ich nehme an, dass Ihre Kontrolle woanders sein wird auf der Seite.
  3. Auf der Client-Seite im Iframe können Sie Javascript verwenden, um auf das DOM der äußeren Seite zuzugreifen und die Sichtbarkeit dort festzulegen.

0

Für den Anfang, FindControl ist keine Funktion in Javascript.

  0

, das ist, weil ich in dem Code hinter der Verwendung wurde 30 dez. 082008-12-30 16:49:13


2

Geordnetes 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 document object auf der window object auf Last und verwendet die getElementId() Funktion den Wert einzustellen der Eingabe im Körper des übergeordneten Dokuments.


0

hier Alternativ kann eine hilfreiche Fund 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