2012-11-21 15 views
6

Ich arbeite an einer Website in asp.Net, und ich verwende iframe, um eine separate Seite zu laden. Die separate Seite mit dem Namen Districting.aspx, enthält eine asp button, die onClick(), ruft eine Funktion in C#, mit dem Namen DoneClicked(). Dies ist die asp Tastensteuerung:Zugriff auf ein übergeordnetes Element von iframe mit C#?

<asp:Button ID="LinkButtonDone" CssClass="button button-yellow" runat="server" OnClick="DoneClicked" Text="Done" /> 

In Code hinter die DoneClicked Funktion:

protected void Doneclicked(object sender, EventArgs e) 
    { 
     // Some code here 
     // Calling a function from Default page 
    } 

Was muss ich am Ende DoneClicked Funktion zu tun ist, eine Funktion aus der Default.aspx Seite muss heißen.

Also, wie kann ich auf eine Funktion von Default.aspx.cs in der iframe Seitencode hinter zugreifen?

Thanks :)

Antwort

3

unten probieren es funktionierte für mich

In-Code Hinter

protected void Doneclicked(object sender, EventArgs e) 
    { 
     ScriptManager.RegisterStartupScript(this, this.GetType(), "scriptid", "window.parent.location.href='ParentPageName.aspx';", true); 
} 
+0

Thank you !! Du hast viel geholfen :) – Hanady

+0

@ Aristos/@ Divya Rana/@ Hanady: Kann mir bitte jemand erklären, wie die obige Lösung funktioniert, um eine Methode aus Default.aspx.cs Datei (Parent page) –

+0

@ C.M.W aufzurufen. Du nennst eigentlich KEINE Methode, du schreibst einfach etwas JavaScript-Code auf die Seite, die sie aufruft - oder führe aus, was du erwartest. – Aristos

1

Sie es nicht direkt (in einer empfehlenswerten Art und Weise zumindest nicht) zugreifen können.

Sie sollten den gemeinsamen Code von Default.aspx in eine Klasse abstrahieren, die von beiden Seiten verwendet werden kann.

0

Sie können das nicht direkt tun, aber Sie können es indirekt mit Javascript tun.

So machen Sie eine versteckte Schaltfläche auf der Standardseite, die die DoneClicked Funktion als anrufen:

<div style="display:none"> 
    <asp:Button ID="Done" runat="server" ClientIDMode="Static" OnClick="DoneClicked " /> 
</div> 

und im Inneren des iframe wo Districting.aspx geladen ist, können Sie die „DoneClicked“ aufrufen, indem Sie auf die Schaltfläche klicken mit Javascript als:

<script type="text/javascript"> 
    window.parent.document.getElementById('Done').click(); 
<script> 

Beachten Sie, dass die ClientIDMode="Static" da von der anderen Seite kann man nicht wissen, was die ID gemacht, so dass es statisch halten. Wenn Sie dot net 4 nicht mit der statischen ID verwenden, müssen Sie auch JavaScript verwenden, um die gerenderte ID an die Seite zu senden oder eine andere Möglichkeit, die Schaltfläche zu finden.

Beachten Sie auch die window.parent., die aus dem Iframe die DOM-Struktur der Steuerelemente der Seite, die den Iframe enthält, sehen können.

Verwandte Themen