Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774

    cross page posting non funziona!

    ciao,
    ho creato un applicativo con una pagina di ricerca che deve postare ad una pagina che mi visualizzi i risultati.

    Per far questo utilizzo il Cross Page Posting:
    http://msdn.microsoft.com/it-it/library/ms178139.aspx


    Quindi:
    Ho settato il PostBackUrl della pagina1 su pagina2.
    Da pagina 2 cerco di accedere ai controlli della pagina1 tramita il riferimento Page.PreviousPage.

    PreviousPage è valorizzato quindi il CrossPagePosting funziona.
    Il problema è che il metodo FindControl mi restituisce sempre NULL.
    In parole povere non riesco a trovare i controlli che mi servono per recuperare i dati e non riesco proprio a capire come mai.

    Ho seguito la guida alla lettera e francamente non riesco proprio a capire quale sia l'errore.
    Vi posto un po' di codice sperando che almeno voi riusciate a trovare l'intoppo!

    pagina1.aspx
    codice:
    <form id="formSearch" runat="server">
    <asp:TextBox ID="txtNumeroSpedizione" runat="server" />
    <asp:Button ID="btnSearch" PostBackUrl="~/pagina2.aspx" Text="Cerca" runat="server" />
    </form>

    pagina2.aspx
    codice:
        protected void Page_Load(object sender, EventArgs e){
    
            if (Page.PreviousPage != null){
                TextBox txtNumeroSpedizione = (TextBox)Page.PreviousPage.FindControl("txtNumeroSpedizione");
                if (txtNumeroSpedizione != null){               
                    lblfeedback.Text = "trovato controllo!";
                }else {
                    lblfeedback.Text = "non trova il controllo!!!!";
                }
            }
    
        }

    ovviamente il risultato è che non trova il controllo!!!

    dove sbaglio?
    sono giorni che mi fa dannare questa cosa
    grazie mille
    citrus

  2. #2
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    rieccomi:
    ho fatto altri tentativi e, visto che tutte le pagine sono contenute in una Master Page, ho pensato di iniziare a cercare i miei controlli a partire dai primi controlli della Master Page.

    ecco il nuovo codice:
    codice:
    protected void Page_Load(object sender, EventArgs e){
    
            if (Page.PreviousPage != null){            
    
                ContentPlaceHolder pageMain = (ContentPlaceHolder)Page.PreviousPage.FindControl("pageMain");
                if (pageMain != null) {
                   
                    Content box = (Content)pageMain.FindControl("SearchAdvanced");
                    if (box != null){              
    
                        TextBox txtNumeroSpedizione = (TextBox)box.FindControl("txtNumeroSpedizione");
                        if (txtNumeroSpedizione != null){
                            lblfeedback.Text = " txtNumeroSpedizione trovato!";
                        }else{
                            lblfeedback.Text = "txtNumeroSpedizione NON trovato!!!!";
                        }
                    }
                }
            }
            
        }

    Purtroppo ancora non funziona!
    non trova neppure il primo controllo ContentPlaceHolder.

    non so più cosa fare...
    possibile che sia così complicato passare dati di un form da una pagina ad un altra?
    una volta era la cosa più facile di questo mondo, adesso pare serva una laurea in ingegneria!!

    se potete aiutatemi
    grazie
    citrus

  3. #3
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    allora:
    ho scoperto che il problema è la Master Page!
    ho estratto pagina1.aspx e pagina2.aspx dalla Master Page ed i dati passano senza problemi.

    E' già qualcosa aver capito quale sia il problema!
    Anzi spero sia di aiutoi anche ad altri visto che cercando Cross Page Posting nel forum non si trova nulla...


    Il punto è che io ho assolutamente bisogno della master page, non posso proprio farne a meno!
    Qualcuno sa dirmi come posso risolvere questa cosa?

    grazie mille
    citrus

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    559
    il problema è che findControl se applicato alla pagina... la prima cosa che ti trova.. è il form!

    ti consiglio di
    1. nelle pagine, metti i controlli publici (non protected come default)
    2. fare il cast al tipo effettivo delle pagine
    3. a questo punto automaticamente vedi i controlli come delle propieta!
    se nella vita avro avuto la possiblita di aiutare qualcuno non avro vissuto invano (E. Dikinson)

  5. #5
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    ciao,
    non mi risulta che trovi il form come primo controllo.
    Senza la master page di mezzo riesco ad accedere ai controlli semplicemente facendo:

    codice:
    TextBox txt = (TextBox)Page.PreviousPage.FindControl("nomeControllo");

    Comunque per chi fosse interessato ho risolto il problema.
    Nel caso in cui si faccia Cross Page Posting tra due pagine contenute in una Master Page il codice per accedere ai controlli della pagina chiamante è il seguente:

    codice:
    TextBox txt = (TextBox)Page.PreviousPage.Master.FindControl("ContentPlaceHolderID").FindControl("TextBoxID");
    In pratica la gerarchia prevede che venga raggiunto prima il ContentPlaceHolder, e da qui tutti i controlli contenuti nella pagina che questo contiente.

    Non è necessario attraversare altri controlli.

    spero sia d'aiuto
    ciao
    citrus

  6. #6
    Grande Citrus!!!
    ho avuto anch'io lo stesso problema e non riuscivo a trovare una soluzione efficace anche perchè in giro si trovano molti esempi senza utilizzare le Master...
    Ora provo la soluzione da te proposta e speriamo che vada a buon fine!!!

    Grazie e ciao

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.