Caricamento pagina

lunedì 20 ottobre 2008 - 15.47

bolla111 Profilo | Senior Member

io carico la pagina ed inserisco in essa un gridview contenente valori presi da un database.aggiungo una colonna contenente un link che mi apre una nuova form
nella nuova form ho dei campi textbox riempiti con dei valori passati dalla form principale tramite querystring. alla pressione di un bottone in questa, form questi valori (modificati o no) vengono utilizzati da una query x la modifica e da un dbcommand. fin qui nessun problema. il fatto è che io quando mi ridireziono nella form principale, il gridview non viene + caricato...perchè?

PEPE Profilo | Senior Member

Ciao,
in che modo ti redirezioni nella pagina principale che contiene la gridview?

bolla111 Profilo | Senior Member

Response.Redirect("FormDtlAssTask.aspx")
ho fatto anche un tasto annulla che mi ridireziona a quella pagina senza eseguire nessun'altro comando
il fatto è che non funziona lo stesso. la cosa è strana perchè ho anche un altra form e un altra pagina oltre a quelle che ho descritto sopra e fanno esattamente le stesse cose(ovviamente è collegata una tabella diversa). forse è il modo in cui collego le tabelle che nel primo caso funziona e nel secondo no. nel primo caso passo le tabelle semplicemente con il datasource ecc, mentre nel secondo la tabella viene aperta in base ai dati che gli passa la prima tabella (cioè clicco un hyperlinkfield, vengono passate le chiavi primarie e apre nella seconda form con la seconda tabella solo i record che mi servono)
non so se mi hai capito...

PEPE Profilo | Senior Member

Non ho capito proprio trobbo bene.
In ogni caso se vuoi collegare un gridview ad una sorgente di dati all'apertura della pagina devi mettere il richiamo al metodo che binda i dati nel page_load della pagina aspx.

Scusami se magari ripeto cose che già sai, ma appena una pagina viene richiamata (ad esempio con un redirect) scatena determinati eventi: preinit, init, load, unload, ecc ecc...mo li ho messi a casaccio :D.
Il più utilizzat è il page_load che ti permette di effetuare determinate operazioni proprio durante il caricamento e la creazione di essa.
Sicuramente dovrai interagire con quell'evento.

Ciao,
Luca.

bolla111 Profilo | Senior Member

ok...non so come fare...

balfaz Profilo | Expert

penso che quello che PEPE vuol dirti è di fare il bind del gridview nell'evento load o nell'evento che più si adatta alla tua necessità facendo conto che quelli menzionati da PEPE sono quelli che si eseguono durante la carica o chiamata di una WebForm
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

bolla111 Profilo | Senior Member

non so se è chiara come l'ho spiegato all'inizio...cmq non mi carica il gridview perchè quando "torno" nella gridview non trova i parametri di ingresso...

balfaz Profilo | Expert

lo puoi postare un po di codice???
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

bolla111 Profilo | Senior Member

ma il codice anche se te lo posto è giusto perchè la mia grid viene caricata...solo che poi quando vado a modificarla (cioè apro una nuova web form alla quale passo i miei parametri da modificare in varie textbox, e con un tasto mi salva le modifiche tramite una query e mi fa tornare alla mia pagina contenente la grid), la grid non viene + caricata perchè i parametri di ingresso non arrivano (dato che in origine arrivano dalla webform di default)...devo trovare il modo di farla caricare cmq...

balfaz Profilo | Expert

e come fai a chiamare la webform che ti carica i nuovi dati (quella che poi ti fa tornare al GridView)??
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

bolla111 Profilo | Senior Member

allora...parto da 0...
_web form di default: ho una griglia con una colonna hyperlinkfield che passa 2 campi chiave (tramite querystringparameter) e mi direziona nella webform1.
_webform1: ho una griglia popolata con i record che hanno come chiave i 2 parametri che gli ho passato dalla default. anche in questa griglia ho un hyperlinkfield che mi manda nella webform2 passandogli il valore dei campi di quel determinato record.
_webform2: ho un tot di textbox contententi i vari valori che gli ho passato (tramite l'istruzione request.querystring(parametro) ) dalla webform1. in questa form faccio, da codice, la query x la modifica (che funziona) e tramite l'istruzione response.redirect(webform1.aspx) torno nella mia form1 con la gridview, che però non carica perchè non riceve + i parametri di ingresso (che riceve dalla default)...questo è il mio problema...

balfaz Profilo | Expert

quello che adesso ti chiedo per non romperti .... lo schema di lavoro che hai già realizzato, non hai maniera di rinviare questi parametri per la ricarica del tuo datagrid anche quando torni indietro dalla webform2???,
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

bolla111 Profilo | Senior Member

è proprio quello che non so come fare a farlo....

balfaz Profilo | Expert

puoi dirci qualcosa dei parametri che usi per caricare il gridview?, cosi possiamo cercare una soluzione alternativa

perché altrimenti potresti cercare di usare delle variabili session che potrai creare prima di andare al form dove introduci i dati dopo usare queste variabili per ricomporre l'url del form originale (inteso come il WebForm1)

"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

bolla111 Profilo | Senior Member

ti posto il codice markup x farti vedere come carico la grid...ovviamente solo quello che serve...



<asp:GridView ID="GridDtlAssTask" runat="server"
BackColor="#88EEFF"
BorderWidth="10px" BorderColor="#FFDDAA" GridLines="Horizontal"
CellSpacing="1" HorizontalAlign="Center"
HeaderStyle-BackColor="#CCFFCC"
Height="165px" Width="595px" AutoGenerateColumns="False"
DataKeyNames="TAID,TAIDIN,DAID,PRID" DataSourceID="SqlDataSource2"
AllowPaging="True" >
<PagerSettings Position="Top"/>

<Columns>

<asp:BoundField DataField="TAID" HeaderText="TAID" ReadOnly="True" SortExpression="TAID" />
<asp:BoundField DataField="TAIDIN" HeaderText="TAIDIN" ReadOnly="True" SortExpression="TAIDIN" />
<asp:BoundField DataField="DAID" HeaderText="DAID" ReadOnly="True" SortExpression="DAID" />

<asp:BoundField DataField="PRID" HeaderText="PRID" ReadOnly="True" SortExpression="PRID" />
<asp:BoundField DataField="PRDESC" HeaderText="PRDESC" ReadOnly="True" SortExpression="PRDESC" />

<asp:BoundField DataField="DAQTA" HeaderText="DAQTA" SortExpression="DAQTA" />

<asp:BoundField DataField="PRUDM" HeaderText="PRUDM" SortExpression="PRUDM" />

<asp:HyperLinkField Text="Modifica" datanavigateurlformatstring="~\FormDtlMod.aspx?TAID={0}&TAIDIN={1}&DAID={2}&PRID={3}&PRDESC={4}&DAQTA={5}&PRUDM={6}" DataNavigateUrlFields="TAID,TAIDIN,DAID,PRID,PRDESC,DAQTA,PRUDM"/>

<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="btnDelete2" runat="server" CommandName="Delete" OnClientClick="return window.confirm('Eliminare il record?');" Text="Elimina" />
</ItemTemplate>
</asp:TemplateField>

</Columns>

<HeaderStyle HorizontalAlign="Center" Height="30" />
<AlternatingRowStyle BackColor="#CCFFCC"></AlternatingRowStyle>
</asp:GridView>



&nbsp;<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:AttivitaConnectionString %>"
SelectCommand="SELECT DTLASSTASK.TAID,DTLASSTASK.TAIDIN,DTLASSTASK.DAID,ESPRODOTTI.PRID,ESPRODOTTI.PRDESC,DTLASSTASK.DAQTA,ESPRODOTTI.PRUDM FROM DTLASSTASK INNER JOIN ESPRODOTTI ON DTLASSTASK.DAPRID=ESPRODOTTI.PRID WHERE DTLASSTASK.TAID=@aTAID AND DTLASSTASK.TAIDIN=@aTAIDIN"
DeleteCommand="DELETE FROM DTLASSTASK WHERE TAID=@TAID AND TAIDIN=@TAIDIN AND DAID=@DAID" >
<SelectParameters>
<asp:QueryStringParameter Name="aTAID" QueryStringField="aTAID" DbType="Decimal"/>
<asp:QueryStringParameter Name="aTAIDIN" QueryStringField="aTAIDIN" DbType="Decimal"/>
</SelectParameters>

<DeleteParameters>
<asp:Parameter Name="aTAID" Type="Decimal" />
<asp:Parameter Name="aTAIDIN" Type="Decimal" />
<asp:Parameter Name="aDAID" Type="Decimal" />
</DeleteParameters>

</asp:SqlDataSource>

PEPE Profilo | Senior Member

Ciao, ho capito perfettamente il tuo problema perchè ce l'ho avuto anche io e l'ho risolto in questo modo.
Vado per esempi che mi sembra la soluzione piu giusta.

Ho una url con parametri tipo pippo.aspx?ID=001&LANG=it&TYPECONF=FFRT3919
In questa url ho 3 parametri passati in querystring: ID, LANG, TYPECONF.

La cosa ch ho fatto nel page_load della pagina pippo.aspx è stata memorizzare nel viewstate questi parametri in modo da mantenermeli anche durante i postback. Quindi

Protected sub page_load(bla bla bla)
if not page.ispostback
viewstate.add("ID", request.querystring("ID"))
viewstate.add("LANG", request.querystring("LANG"))
viewstate.add("TYPECONF", request.querystring("TYPECONF"))
end if
end Sub

Adesso, nella pagina pippo.aspx avrai sicuramente un bottone di conferma. Questo bottone oltre ad accettare le tue modifiche/operazioni, ti permette di tornare indietro con un redirect.

Quindi, nel metodo che fa il redirect, reimposti nella querystring i parametri del viewstate tipo:

protected sub button1.click(blablabla) handles button1.click
...
...
...
tue operazioni
...
...
...
response.redirect("paginainiziale.aspx?ID" & viewstate("ID") & "&LANG=" & viewstate("LANG") ecc ecc ecc)

end sub

In questo modo la pagina iniziale si ritroverà nella url gli stessi parametri che gli hai passato in precedenza e potrà ricaricarti i valori giusti.

Spero di esserti stato d'aiuto,
Luca.

bolla111 Profilo | Senior Member

ciao...si + o - ho capito...però ho una domanda...
io dalla prima ala seconda form passo 7 valori, compresi i 2 campi chiave, ma è solo tramite questi ultimi che la prima form apre la gridview con i record che mi interessano.
quindi io devo aggiungere al viewstase solo questi 2 o tutti e 7?

balfaz Profilo | Expert

oooppss , sono stati più veloce di me in dare la risposta, l'unico che come ti indicavo nel mio ultimo thread, io avrei usato delle variabile session per ricomporre l'url tale e quale l'ha fatto PEPE, comunque anche quella che lui ti da e molto valida .
boh, almeno cosi vedi che ce sempre qualcuno disposto a dare una mano come deve essere

mi sembra nello personale che hai un serio inghippo nella struttura del tuo programma, comunque adesso dovresti valutare se i parametri che usi per entrare alla WF_1(WebForm) che mi sembra aver capito sono 7 ti servono per chiamare la WF_2, valuta che comunque può essere che quando torni indietro alla WF_1 tu magari vorresti inserire altri items, quindi a questo punto sarebbe necessario gestire sempre i 7 parametri dell'url, altrimenti puoi solo usare i 2 parametri....ma se fosse cosi a questo punto mi chiederei a cosa ti servono gli altri 5 parametri??? (spero essere stato abbastanza chiaro)

"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

PEPE Profilo | Senior Member

Ciao,
devi aggiungere quelli che ti servono per ricomporre la gridview.
Se ti servono tutti e 7 salvali tutti, altrimenti salva solamente quelli necessari...giusto per non impastrocchiare la url di valori inutili :D.
L'importante è che quando passi dalla pagina 1 a pagina 2, pagina 2 a pagina 3, pagina 3 a pagina 2, riesci a conservarti i parametri per ricaricare la grid.

Saluti,
Luca.

bolla111 Profilo | Senior Member

io dalla wf1 all wf2 passo 2 parametri x aprire la grid
dalla wf2 alla wf3 passo 7 parametri (che vengono visualizzati nelle 7 texbox)
quindi x tornare alla wf2 e riaprire la grid dovrei passare solo 2 parametri...no? solo che non me la apre...ho sbagliato qlcs...mi aiutate?
posto il codice che serve della wf3

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

If Not Page.IsPostBack Then

valore1 = Request.QueryString("TAID")
TextTAID.Text = valore1

valore2 = Request.QueryString("TAIDIN")
TextTAIDIN.Text = valore2

valore3 = Request.QueryString("DAID")
TextDAID.Text = valore3

valore4 = Request.QueryString("PRID")
TextPRID.Text = valore4

valore5 = Request.QueryString("PRDESC")
TextPRDESC.Text = valore5

valore6 = Request.QueryString("DAQTA")
TextDAQTA.Text = valore6

valore7 = Request.QueryString("PRUDM")
TextPRUDM.Text = valore7

ViewState.Add("TAID", Request.QueryString("TAID"))
ViewState.Add("TAIDIN", Request.QueryString("TAIDIN"))

End If

End Sub

'Bottone Annulla
Protected Sub ButtonAnnulla_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonAnnulla.Click
Response.Redirect("FormDtlAssTask.aspx?TAID=" & ViewState("TAID") & "&TAIDIN=" & ViewState("TAIDIN"))
End Sub

balfaz Profilo | Expert

lo so che è più comodo inviare questi dati da mettere direttamente del textbox, ma si usasi solo i campi chiave per fare una nuova SELECT e di questa maniera caricarli direttamente dal DataTable?, almeno cosi puoi lavorare con i tuoi 2 campi per la WF_2

e poi verifica l'url che ti fa tornare indietro alla WF_2 (magari c'è qualche errore nella stringa)
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

bolla111 Profilo | Senior Member

gli altri valori glieli passo perchè:
1_voglio visualizzarli
2_mi servono in quella form x l'update...
cmq tu fici che se non funziona è perchè c'è un errore nella stringa, nell'url?
Response.Redirect("FormDtlAssTask.aspx?TAID=" & ViewState("TAID") & "&TAIDIN=" & ViewState("TAIDIN"))
mi torna nella wf2 il problema è che non gli passa i dati ancora...

balfaz Profilo | Expert

invece di
Response.Redirect("FormDtlAssTask.aspx?TAID=" & ViewState("TAID") & "&TAIDIN=" & ViewState("TAIDIN"))

usa
Response.Redirect("FormDtlAssTask.aspx?TAID=" + ViewState("TAID") + "&TAIDIN=" + ViewState("TAIDIN"))
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

bolla111 Profilo | Senior Member

non funziona...

balfaz Profilo | Expert

ma domanda, l'url di ritorno com'è? in caso fosse sbagliato prova a verificare che le variabili che inserisci nel viewstate no siano vuote
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

PEPE Profilo | Senior Member

Ciao,
potrebbe essere che la compilazione dell'url sia errata in quanto il motore di asp net codifica i caratteri strani nel relativo codice html.

Una volta che sei sicuro che il tuo imput non sia corrotto fai cosi:

response.redirect(httputility.htmldecode("tuapagina.aspx?ID=" & viewstate("dscdscds") ecc ecc ecc)))

Praticamente includi tutta la tua url nel metodo hrmldecode.

Altra cosa, che linguaggio usi per lo sviluppo? Se usi VB allora la concatenazione di fa con il carattere & altrimenti in c# usi il +.

Ciao,
Luca.

bolla111 Profilo | Senior Member

ok...tutto apposto...grazie raga
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5