2012-11-21 20 views
6

Sto lavorando su un sito web in asp.Net e sto utilizzando iframe per caricare una pagina separata. La pagina separata denominata Districting.aspx, include un asp button, che onClick(), chiama una funzione in C#, denominata DoneClicked(). Questo è il controllo pulsante di asp:Come accedere a un elemento genitore da iframe usando C#?

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

Nel codice dietro, la funzione DoneClicked:

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

Che cosa devo fare è alla fine di DoneClicked funzione, una funzione dalla pagina Default.aspx deve essere chiamato.

Quindi, come posso accedere a una funzione da Default.aspx.cs nel codice della pagina iframe?

Grazie :)

risposta

3

Prova Di seguito ha funzionato per me

Nel Codice Dietro

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

Grazie !! Hai aiutato molto :) – Hanady

+0

@ Aristos/@ Divya Rana/@ Hanady: Qualcuno di voi può spiegarmi come ha funzionato la soluzione sopra descritta per chiamare un metodo dal file Default.aspx.cs (Pagina padre) –

+0

@ C.M.W. in realtà NON si chiama un metodo, si scrive semplicemente del codice javascript sui rendering delle pagine che lo chiamano o si esegue ciò che si aspetta. – Aristos

1

Non è possibile accedere direttamente (almeno non in modo opportuno).

Si dovrebbe estrarre il codice comune da Default.aspx in una classe da qualche parte che può essere utilizzata da entrambe le pagine.

0

Non è possibile farlo direttamente, ma è possibile farlo indirettamente utilizzando javascript.

in modo da fare un pulsante nascosto nella pagina di default che può chiamare la funzione DoneClicked come:

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

e dentro la iframe dove Districting.aspx viene caricato, è possibile chiamare il "DoneClicked" facendo clic sul pulsante con javascript come:

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

si noti che la ClientIDMode="Static" perché dall'altra pagina che non può sapere che cosa è l'id reso, in modo da tenerlo statica. Se non usi dot net 4 che ha l'id statico, devi usare javascript per inviare l'id renderizzato alla pagina, o un altro modo per localizzare il pulsante.

Nota anche lo window.parent. che "può vedere" dall'iframe la struttura DOM dei controlli della pagina che contiene l'iframe.

Problemi correlati