Page_Load

giovedì 25 gennaio 2007 - 12.51

nik10 Profilo | Junior Member

Ciao a tutti il mio problema è il seguente:

Ho un form con varie textbox e una ddl che quando cambia va a caricare le textbox con dati tirati su da db.
Adesso, per far questo ho inserito il metodo di riempimento delle text nel "Page_load" e ho dato la proprietà AutoPostBack=true alla mia ddl in modo tale da richiamare il Page_load ogni volta che cambio la ddl. In questo form avrei anche la possibilità di aggiornare i miei dati, il problema e che ogni volta che premo il mio tastino salva mi va a ricaricare i dati vecchi sulle text, quindi come posso fare?
So che esiste il ViewState ma non lo so usare o testare in modo tale che possa salvare i miei dati...

grazie a tutti
Nik10

amelix Profilo | Expert

Nel metodo che ti popola la form hai fatto il controolo del post-back o usi un xDataSource?
Andrea
http://www.MelisWeb.eu/

nik10 Profilo | Junior Member

no il controllo postback ce l'ho solo nel page_load per il caricamento della ddl in modo da non perdere quello selezionato... per quanto riguarda xDatasource che cosa è? scusami ma non lo so...

grazie
Nik10

us01739 Profilo | Expert

Prova con EnableViewState=true

Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

amelix Profilo | Expert

Forse c'è qualcosa che non va nel metodo che salva...
Post please!
Andrea
http://www.MelisWeb.eu/

nik10 Profilo | Junior Member

private void ImpostaDettaglio(string sComando,string sCodice)
{
string[] sSplt;
string sCodAna="", sCodInd="";
if (sComando.Equals("A") || sComando.Equals("I"))
{
//scompongo un codice che è formato da due num con un trattino in mezzo (es. 32-1)
sSplt=sCodice.Split('-');
sCodAna=sSplt[0];
sCodInd=sSplt[1];
//Carica riga è il metodo che mi carica la riga desiderata da db a questo punto vado
// a inserirla nelle txt se è valorizzata
DataRow DRow = CaricaRigaIndirizzo(sCodAna,sCodInd);
if (!DRow.Equals(DBNull.Value))
{
if (ViewState["Codice"]!=ddlAnag.SelectedValue && ViewState["Codice"]==null)
{
txtPrgInd.Text = sCodInd;
txtPrgInd.ReadOnly = true;
txtInd.Text = DRow["ICF_Indirizzo"].ToString();
txtCap.Text = DRow["ICF_CAP"].ToString();
txtCitta.Text = DRow["ICF_Citta"].ToString();
txtProv.Text = DRow["ICF_Provincia"].ToString();
txtNaz.Text = DRow["ICF_Nazione"].ToString();
txtCodFisc.Text = DRow["ICF_Codice_Fiscale"].ToString();
txtPIva.Text = DRow["ICF_Partita_Iva"].ToString();
Session["CAna"]=sCodAna;
Session["CInd"]=sCodInd;
}
}
}

questo è il codice della mia procedura che è inserita nel PAge_load del mio WebForm....
Nik10

amelix Profilo | Expert

Non ti conviene attaccare un metodo al OnIndexChanged della ddl?
Andrea
http://www.MelisWeb.eu/

nik10 Profilo | Junior Member

attacarlo a che cosa? tu intendi inserire la procedura nell'evento IndexselectdChange della ddl... forse?
Cmq si ho provato ma il problema è che mi carica sempre prima la pagina poi mi esegue l'evento della ddl...
Nik10

amelix Profilo | Expert

E deve essere cosí.
Nel Page_Load popoli la form (controllando se sei in IsPostBack).
Ogni controllo deve essere auto-sufficente.
Se alla modifica dell'elemento desiderato devi fare delle operazioni e giusto che se le faccia da
solo...

Riesci a mettere + codice?

Andrea
http://www.MelisWeb.eu/

nik10 Profilo | Junior Member

ti inserisco ancora il page_load il resto non penso ti interessi....
private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
CaricaAnagrafica(Session["Comando"].ToString(),Session["CCat"].ToString(),Session["CAna"].ToString(),Session["CInd"].ToString());
ImpostaDettaglio(Session["Comando"].ToString(),ddlAnag.SelectedValue);
}

CaricaAnagrafica è la mia procedura per popolare la ddl ed viene caricata una volta sola infatti è sotto il postback... l'impostadettaglio è la funzione inserita nel precedente post. i parametri che passo sono parametri globali arrivati da precedenti form tranne ddlAnag.SelectedValue che è il valore selezionato della famosa ddl del form
Nik10

amelix Profilo | Expert

Una domanda.... Dove imposti ViewState["Codice"]?
Andrea
http://www.MelisWeb.eu/

nik10 Profilo | Junior Member

scusami per sbaglio ho cancellato una riga... lo setto nel 'impostadettaglio alla fine dove ci sono le session in modo che se non cambiano indice nella ddl le text non si aggiornano... poi l'avrei messo anche nell'evento indexselectedChange ma me lo aggiorna sempre dopo essere passato prima nell'impostadettaglio
Nik10

amelix Profilo | Expert

Teoricamente, da quello che ci hai mandato, dovrebbe funzionare.
Non è ottimizzato e non è object oriented ma può funzionare!
Andrea
http://www.MelisWeb.eu/
Revisione:
PS Ho notato solo ora un && che, secondo me, dovrebbe errere un ||
if (ViewState["Codice"]!=ddlAnag.SelectedValue && ViewState["Codice"]==null)
if ((ViewState["Codice"]==null) || (ViewState["Codice"]!=ddlAnag.SelectedValue))

nik10 Profilo | Junior Member

lo so anche io... il problema e che se ho più valori per un personaggio non mi carica gli altri nelle txt ... hai qualche idea?
Nik10

amelix Profilo | Expert

Non ho capito cosa hai scritto....
Hai letto la revisione del msg precedente?
Andrea
http://www.MelisWeb.eu/

nik10 Profilo | Junior Member

ho provato ma c'è un piccolissimo problema...
Mi trova che ViewState["Codice"] è diverso da ddl.selectedvalue anche se nel verificarlo sono uguali
Sai il perchè?
Nik10

amelix Profilo | Expert

Ma non ti ha dato un errore in compilazione?
Uno è un object (ViewState) e l'altro e' di tipo stringa (DropDownList.SelectedValue)...
Non ci ho fatto caso x quel motivo.


Andrea
http://www.MelisWeb.eu/

nik10 Profilo | Junior Member

no non mi da errore però per lui sono diversi....
Sto impazzendo.....
è possibile che su una stessa pagina non si possa fare una selezione e un aggiornamento insieme?
Nik10

amelix Profilo | Expert

Prova cosí:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Un altro consiglio, carica i dati da DB solo se servono... mettili dentro l'if del viewstate
Andrea
http://www.MelisWeb.eu/
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5