17 messaggi dal 04 settembre 2010
Buona sera al forum,

volevo chiedere se a qualcuno capita di passare dei parametri ad altro form e di dover aprire e chiudere 2 volte il form per vedere i dati passati nel form ricevente?
vi posto il codice:

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        If (Not IsPostBack) Then
            PopolaUfficio()
            PopolaIncarico()
            bind()
            BindGrid()
            BindGridStorico()
        End If
        btnRinnovo.Attributes.Add("onclick", "javascript:window.open('Rinnovo_Contrattuale.aspx?ID=" & lblIDtext.Text & "&Decorrenza=" & txtDecorrenza.Text & "&Termine=" & txtTermine.Text & "', '', 'height=600,width=800')")
    End Sub

 Protected Sub btnRinnovo_btn_Click(sender As Object, e As EventArgs) Handles btnRinnovo.Click
        btnRinnovo.Attributes.Add("onclick", "javascript:window.open('Rinnovo_Contrattuale.aspx?ID=" & lblIDtext.Text & "&Decorrenza=" & txtDecorrenza.Text & "&Termine=" & txtTermine.Text & "', '', 'height=600,width=800')")
   End Sub


non capisco perche devo inserire il codice per aprire un altro form sia nel load della pagina e anche nel button, e nonostante questo devo aprire il form 2 volte altrimenti non passa i parametri.

grazie
Modificato da Mau67 il 19 gennaio 2018 21.22 -
10.603 messaggi dal 09 febbraio 2002
Contributi
Ciao,
dovresti risolvere la questione usando unicamente codice lato client. Se, come credo, le caselle txtTermine e textDecorrenza vengono compilate dall'utente, è inutile che i valori vengano inviati al server se vengono usati unicamente per aprire una modale.

Quindi, fai in modo che btnRinnovo non sia un asp:Button ma un comune bottone html come questo:
<input type="button" id="btnRinnovo" value="Apri modale" onclick="ApriModale()" />


Al click sul bottone, verrà eseguita una funzione ApriModale definita come segue. Dovrai conoscere gli id che le textbox assumono lato client per poterne recuperare il valore con javascript.
<script>
function ApriModale() {

//Qui è importante passare gli id corretti alla funzione getElementById
var lblIdtext = document.getElementById("Id della label");
var txtDecorrenza = document.getElementById("Id della casella della decorrenza");
var txtTermine = document.getElementById("Id della casella del termine");

window.open('Rinnovo_Contrattuale.aspx?ID=" + lblIDtext.innerText + "&Decorrenza=" + txtDecorrenza.value "&Termine=" + txtTermine.value + "', '', 'height=600,width=800');

}
</script>


ciao,
Moreno
Modificato da BrightSoul il 20 gennaio 2018 18.34 -

Enjoy learning and just keep making
17 messaggi dal 04 settembre 2010
Grazie per la risposta!
ho risolto in questo modo

FORM CHIAMANTE
 <script type="text/javascript">
        function OpenWindowsRinnovoContrattuale() {
            var CodPers = document.getElementById('txtID').value;
            var Decorrenza = document.getElementById('txtDecorrenza').value;
            var Termine = document.getElementById('txtTermine').value;
           

            window.open('Rinnovo_Contrattuale.aspx?CodPers=' + CodPers + '&Decorrenza=' + Decorrenza + '&Termine=' + Termine,
                        '_blank', 'location=no,resizable=0,width=800,height=600', true);
        }
   </script>

 <asp:Button ID="btnRinnovo" runat="server" Text="Rinnovo Contrattuale" ToolTip="Inserici i rinnovi contrattuali" CssClass="Rinnovo_btn" OnClientClick=" OpenWindowsRinnovoContrattuale()"></asp:Button>


FORM CHIAMATO
lblIDtext.Text = Request.QueryString("CodPers")
      txtDecorrenza.Text = Request.QueryString("Decorrenza")
      txtTermine.Text = Request.QueryString("Termine")


Grazie
10.603 messaggi dal 09 febbraio 2002
Contributi
Benissimo

Ti suggerisco di usare un encodeURIComponent qui, per fare l'escape dei caratteri speciali.
window.open('Rinnovo_Contrattuale.aspx?CodPers=' + encodeURIComponent(CodPers) + '&Decorrenza=' + encodeURIComponent(Decorrenza) + '&Termine=' + encodeURIComponent(Termine),
                        '_blank', 'location=no,resizable=0,width=800,height=600', true);


Ecco la documentazione della funzione:
https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

ciao,
Moreno

Enjoy learning and just keep making
17 messaggi dal 04 settembre 2010
Grazie per l'aiuto,
ho risolto passando parametri presi da delle textbox, se devo prelevare dei parametri anche dalla gridview?


FORM CHIAMANTE
 <script type="text/javascript">
        function OpenWindowsRinnovoContrattuale() {
            var CodPers = document.getElementById('txtID').value;
            var Decorrenza = document.getElementById('txtDecorrenza').value;
            var Termine = document.getElementById('txtTermine').value;  <<<<<<<Qui dovrei passare il parametro di un campo della gridview
           

            window.open('Rinnovo_Contrattuale.aspx?CodPers=' + CodPers + '&Decorrenza=' + Decorrenza + '&Termine=' + Termine,
                        '_blank', 'location=no,resizable=0,width=800,height=600', true);
        }
   </script>
window.open('Rinnovo_Contrattuale.aspx?CodPers=' + encodeURIComponent(CodPers) + '&Decorrenza=' + encodeURIComponent(Decorrenza) + '&Termine=' + encodeURIComponent(Termine),
                        '_blank', 'location=no,resizable=0,width=800,height=600', true);<b></b> <b></b> <b></b>


grazie
Modificato da Mau67 il 07 febbraio 2018 19.41 -
10.603 messaggi dal 09 febbraio 2002
Contributi
Ciao,


se devo prelevare dei parametri anche dalla gridview?

proprio come hai già fatto, dovresti prendere il valore da un elemento HTML (es una casella di testo o un campo hidden) usando document.getElementById.

La difficoltà sta nel conoscere a priori quale id ha quell'elemento in una certa riga. Se sulla GridView imposti ClientIDMode="Predictable" sarà più semplice riuscire a prevedenrlo. Leggi qui:
http://highoncoding.com/Articles/703_Understanding_ClientIDMode_Mode_Feature_in_ASP_net_4_0.aspx

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.