Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117

    Apertua Popup per scelta campi

    Ho un datagrid con un pulsante in ogni riga (accanto ad un TextBox) dal quale apro una nuova popup

    <script>

    function PopUpCerca()
    {
    window.open('SceltaPopUp.aspx','','toolbar=no,loca tion=no,
    directories=no,status=no,menubar=no,scrollbars=yes ,resizable=no,
    width=650,height=700')
    }

    </script>


    che mi consente di scegliere un elemento e visualizzarlo all'interno del TextBox del datagrid

    utilizzando:

    <a href="#" onclick="opener.document.Form1.MatricolaNuovo.valu e = '<%#
    DataBinder.Eval(Container.DataItem,"matricola")%>' ;
    setTimeout('self.close()',200);">
    seleziona</a>


    nel datagrid:


    <asp:TextBox id="Nuovo" runat="server" width="100px" />
    <asp:Button id="Trova" runat="server" Text="Cerca"
    CausesValidation="False"></asp:Button>


    e nell'itemdataboud:

    Button btn = (Button)e.Item.Cells[7].FindControl("Trova");

    if (btn != null)

    {

    btn.Attributes["OnClick"] = "javascript:PopUpCerca()";

    }

    il mio problema è che, anche se viene aperta la popup, quando seleziono un elemento non mi viene copiato nel TextBox e non mi si chiude la popup.

    Il codice della popup è corretto dato che utilizzo la stessa logica anche in un form (quindi non un datagrid) nel quale apro la popup utilizzando un pulsante accanto al TextBox

    dove sbaglio?

  2. #2
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Please help me!


  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non ho guardato il tuo codice ma, da un punto di vista teorico:

    il popup dovrebbe fare qualcosa come:
    opener.getElementById(ID_ELEMENTO).value = TESTO;

    Il problema si riduce allora a conoscere ID_ELEMENTO

    Un modo potrebbe essere quello di passarlo al popup

    Window.open("pagina.aspx?id_elemento=............. .

    Pietro

  4. #4
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    quindi non devo usare:

    <a href="#" onclick="opener.document.Form1.MatricolaNuovo.valu e = '<%# DataBinder.Eval(Container.DataItem,"matricola")%>' ; setTimeout('self.close()',200);">

    ma:

    <a href="#" onclick="opener.getElementById(ID_ELEMENTO).value = '<%# DataBinder.Eval(Container.DataItem,"matricola")%>' ; setTimeout('self.close()',200);">


    ???

    ma quale ID devo passare?? in tutte le righe del datagrid il textbox ha lo stesso Id...

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Allora, ho fatto un esempietto semplice e non completo in BASIC

    Se vuoi possiamo vederlo

    Pietro

  6. #6
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    ??????????

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    L'esempio è buttato al volo perciò attenzione

    nella pagina a.aspx ho una griglia. dentro la griglia ho, dentro un TemplateColumn un TextBox di ID="tb1"
    Ho inoltre un <asp:HyperLink ID="hl1" che serve per aprire il popup

    Nell'evento DataGrid1_ItemDataBound ho
    codice:
            Select Case e.Item.ItemType
                Case ListItemType.AlternatingItem, ListItemType.Item
                    Dim b As TextBox = DirectCast(e.Item.FindControl("tb1"), TextBox)
                    Dim cid$ = b.ClientID
                    Dim hl As HyperLink = DirectCast(e.Item.FindControl("hl1"), HyperLink)
                    hl.Text = "apri popup"
                    hl.NavigateUrl = "javascript:void(0);"
                    hl.Attributes.Add("onclick", String.Format("var w=window.open('b.aspx?chiave={0}','popup','width=300px, height=300px,left=300px,top=300px,');w.focus();return false;", cid))
    
            End Select
    che come vedi permette al link di aprire il popup passandole come parametro, l'identificativo del textbox.



    La pagina popup, recupera il parametro e lo mette in una variabile protetta:
    chiave = Trim(Me.Request("chiave"))

    ed il javascript richiamato da un pulsante, copia per esempio i dati di un textbox nel textbox della griglia del chiamante:

    codice:
    function btn1_onclick() {
    	var chiave="<%=chiave%>";
    	opener.document.getElementById(chiave).value = document.getElementById("TextBox1").value;
    	self.close();
    	
    }
    A me funziona L'ho collaudato

    Pietro

  8. #8
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Allora, prima di tutto ti ringrazio per l'aiuto!

    ho fatto un casino di prove ma mi sto perdendo, riassumo (in C#)

    nel datagrid:

    <asp:TextBox id="MatricolaNuovo" runat="server" CssClass="TestoDataGrid" width="100px" />

    <asp:HyperLink id="hl1">Prova</asp:HyperLink>


    nell'item databound


    protected void MyDataGrid_OnItemDataBound(object sender, DataGridItemEventArgs e)

    {
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.EditItem)



    TextBox b = (TextBox)(e.Item.Cells[7].FindControl("MatricolaNuovo"));
    int IDRiga = b.ClientID;
    Button btn = (HyperLink)(e.Item.Cells[7].FindControl("hl1"));
    btn.Text="Apri";
    btn.ResolveUrl = "java script:void(0);"; // VS non mi da il navigateurl... per quale motivo???

    btn.Attributes.Add("onClick",String.Format("var w=window.open('b.aspx?chiave={0}','popup','width=3 00px, height=300px,left=300px,top=300px,');w.focus();ret urn false;", IDRiga));

    }

    }


    fin qui è OK?

    a questo punto, nella popup richiamo la chiave nel pageload, usando

    if (Request.QueryString["chiave"] == null)
    {
    int chiave = (int)Request.QueryString["chiave"]
    }



    ora però anche nella popup ho un datagrid, con l'elenco degli elementi, infatti avevo inserito (nella pagina colonna) un link del tipo:

    <a href="#" onclick="opener.document.Form1.MatricolaNuovo.valu e = '<%# DataBinder.Eval(Container.DataItem,"matricola")%>' ; setTimeout('self.close()',200);">
    seleziona</a>

  9. #9
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    ho trovato un errore:


    HyperLink btn = (HyperLink)....

    e non Button btn...

    ma il mio dubbio sulla popup resta...

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Mi dispiace, ma non conosco c#. Ti posso però suggerire di adattare e migliorare possibilmente lo scritto che ti ho dato che, ripeto, l'ho provato e funziona. Insomma, l'importante è capire il principio:
    1) il client deve sapere l'id del textbox da aggiornare
    2) l'id client del textbox è conosciuto
    3) un modo per passarlo al popup è il metodo get, ma puoi tentare con un cookie o con una variabile session

    Insomma, ci si può divertire

    Pietro

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 © 2026 vBulletin Solutions, Inc. All rights reserved.