Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 38
  1. #1

    [1.1]Finestra popup e aggiornamento datagrid

    Nella finestra popup, dopo varie operazioni ecc, mi viene generata la query da dare in pasto a una sub che è responsabile del riempimento del datagrid. Questa sub è parametrica: primo parametro= query; secondo parametro=griglia.
    Come posso far effettuare le operazioni di: chiusura di popup, aggiornamento della datagrid con richiamo della sub pur non essendo posizionato sulla pagina contenente la datagrid??Mi spiego meglio...ho provato al click del bottone finale della popup a lanciare riempigriglia(query, griglia) ma ovviamente griglia non me lo trova in quanto non è presente nella pagina aspx corrente (il popup).
    Vi ringrazio anticipatamente per le eventuali risposte e, come sempre, spero di essere stato chiaro nell'illustrazione della problematica.

  2. #2
    Qui il problema va risolto con una funzione Javascript che invia il comando dalla pagina figlia a quella madre. Io lproverei a chiedere nella sezione script come interagire tra pagina madre e pagina popup figlia.

  3. #3
    su un blog ho trovato questo codice che dovrebbe effettuare l'update di una riga della griglia partendo dai dati presenti in una finestra popup (un'altra pagina aspx quindi).

    RegisterClientScriptBlock("", "<script>window.opener.document.forms[0].submit(); window.close(); </script>;")
    Si potrebbe fare qualcosa per far si che anzichè chiamare submit(), chiami la mia sub parametrica contenuta in un modulo??

  4. #4
    No perchè risiede lato server la tua Sub Parametrica mentre submit è un evento client gestito in questo caso con Javascript ...

    Sono due cose molto diverse.

  5. #5
    capito. grazie della delucidazione.
    continui dunque a vedere come unica via d'uscita quella dello script scritto a manina??

  6. #6
    Ma certo non puoi interagire script Client (controllo popup) con script server (la tua sub) non vedo logica ... A meno che tu non vuoi passare ad usare Ajax, allora li risolvi tutti e due i problemi in un colpo solo.

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    in effetti si possono fare tante cose, ma se non si conosce javascript...

    dò un esempio ESSENZIALE che credo ti risolvano il problema

    pagina A.aspx che apre il popup B.aspx.

    in b vi è un pulsante che richiama una procedura server in a. Questo è possibile, ajax o non ajax, solo facendo una richiesta server e mandando le giuste informazioni

    pagina a.aspx
    codice:
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="a.aspx.vb" Inherits="corso_apogeo.a"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
      <HEAD>
            <title>a</title>
            <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
            <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
            <meta name="vs_defaultClientScript" content="JavaScript">
            <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <script type="text/javascript">
    var w = null;
    function apri_popup()
    {
        w = window.open("b.aspx", "popup", "top=300px, left=300px,width=300px,height=300px");
        if(w) w.focus();
    }
    
    function refresh(parametro1, parametro2, parametro3)
    {
        document.getElementById("parametro1").value = parametro1;
        document.getElementById("parametro2").value = parametro2;
        document.getElementById("parametro3").value = parametro3;
        
        document.getElementById('refresh').click();
    }
    
    </script>
    </HEAD>
        <body MS_POSITIONING="FlowLayout">
            <h1>a</h1>
            <form id="Form1" method="post" runat="server">
                <asp:Button ID="refresh" Runat="server" style="DISPLAY:none"></asp:Button>
                <input type="hidden" id="parametro1" runat="server" >
                <input type="hidden" id="parametro2" runat="server" >
                <input type="hidden" id="parametro3" runat="server" >
                apri popup
            </form>
        </body>
    </HTML>
    codice a.vb
    codice:
    Public Class a
        Inherits System.Web.UI.Page
    
    #Region " Codice generato da Progettazione Web Form "
    
        'Chiamata richiesta da Progettazione Web Form.
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    
        End Sub
        Protected WithEvents refresh As System.Web.UI.WebControls.Button
        Protected WithEvents parametro1 As System.Web.UI.HtmlControls.HtmlInputHidden
        Protected WithEvents parametro2 As System.Web.UI.HtmlControls.HtmlInputHidden
        Protected WithEvents parametro3 As System.Web.UI.HtmlControls.HtmlInputHidden
    
        'NOTA: la seguente dichiarazione è richiesta da Progettazione Web Form.
        'Non spostarla o rimuoverla.
        Private designerPlaceholderDeclaration As System.Object
    
        Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
            'Non modificarla nell'editor del codice.
            InitializeComponent()
        End Sub
    
    #End Region
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Inserire qui il codice utente necessario per inizializzare la pagina
        End Sub
    
        Private Sub refresh_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles refresh.Click
            'evento scatenato dal controllo refresh
    
            'recupero i tre parametri passati e li stampo a video
            PrintLn(Me.parametro1.Value, "parametro1")
            PrintLn(Me.parametro2.Value, "parametro2")
            PrintLn(Me.parametro3.Value, "parametro3")
    
            'richiamo eventualmente la procedura 
            'xyz(parametro1, parametro2, parametro3)
        End Sub
    End Class
    pagina b.aspx
    codice:
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="b.aspx.vb" Inherits="corso_apogeo.b2"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
        <head>
            <title>b</title>
            <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
            <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
            <meta name="vs_defaultClientScript" content="JavaScript">
            <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <script type="text/javascript">
    function refresh_griglia()
    {
        if(window.opener)
        {
            if(window.opener.refresh)
            {
                window.opener.refresh("Stefano","Carlo","Nicola");
            }
            self.close();
        }
    }
    
    </script>        
        </head>
        <body MS_POSITIONING="FlowLayout">
            <h1>b</h1>
            <form id="Form1" method="post" runat="server">
                <input type="button" value="chiudi" onclick="refresh_griglia();" />
            </form>
        </body>
    </html>
    niente codice b.vb


    NOTA: con ajax fai ne più ne meno la stessa richiesta http alla pagina a.aspx... ma questa è un'altra storia
    Pietro

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    dimenticavo: va con IE6, Firefox 1.5 it, Opera 9
    Pietro

  9. #9
    Originariamente inviato da raffaeu
    Ma certo non puoi interagire script Client (controllo popup) con script server (la tua sub) non vedo logica ... A meno che tu non vuoi passare ad usare Ajax, allora li risolvi tutti e due i problemi in un colpo solo.
    la popup, ci ho tenuto a specificare nel messaggio iniziale, che è una pagina aspx e non è un evento javascript. Cambierebbe qualcosa nell'ottica di risoluzione del problema??

    @pietro09: ancora un immenso grazie per il codice che hai postato. Appena ho la possibilità di testarlo poi ti faccio sapere!!

  10. #10
    porto up questo thread perchè avrei una domanda da porre a riguardo.
    Poichè la mia funzione "riempigriglia" è parametrica, vorrei sapere se il passaggio dei parametri per window.opener.refreshanzichè essere un testo (come nell'esempio postatomi da pietro sono i tre parametri "Stefano", "Nicola"...) può essere una variabile che è risultato di un calcolo effettuato nella finestra di popup.
    Mi spiego meglio postando un po' di mio codice:

    Nella pagina "modifica.aspx" (il popup appunto) ho un bottone al cui click deve essere scatenato il riempimento della griglia nella pagina parent
    Ho pensato dunque di inserire Me.Button1.Attributes.Add("onClick", "refresh_griglia('" & txtRicerca.Text & "');") dove txtricerca.text è la textbox in cui c'è tutta una query che è stata composta in base a opzioni varie che può selezionare l'utente (non potevo farlo lato html in quanto il parametro da passare alla funzione di refresh, non essendo fisso, non avrei saputo come determinarlo).
    In questa stessa pagina, lato HTML, poi alla funzione Refresh_griglia ho aggiunto il parametro "a":
    codice:
    function refresh_griglia(a)
    {
        if(window.opener)
        {
            if(window.opener.refresh)
            {
               
               window.opener.refresh(a);
            }
            self.close();
        }
    }
    Fin qui la teoria direbbe che è tutto corretto ed è tutto giusto.
    Il problema è che quando richiamo la function di composizione della suddetta query e la associo ad una textbox invisibile presente nella form, mi va in errore la pagina

    Alla riga indicata in figura ho questo codice:

    Come si potrebbe risolvere la cosa??
    Spero di essere stato chiaro nella spiegazione.
    grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.