Ciao a tutti.
Ho un problema.
Ho un campo testo con un Buttone. Inserisco una data (01/01/2008) nel campo testo. Premo il bottone. Scatta il postback della pagina. Nel Page_Load creo una GridView a runtime. I dati teoricamente vengono filtrati dal campo data.
Dico teoricamente, perchè questo avviene solo nel passaggio successivo, ed è un bel problema .
Ma a questo a voi non interessa, perchè tra un po' chiederò se c'è un modo di capire chi o cosa ha fatto scattare un evento da page_load. Ma prima, preferisco darvi una visione generale del problema, qualora qualcuno mi volesse chiedere a cosa mi serva avere un informazione del genere. )
Questa è la situazione:
protected void Page_Load(object sender, System.EventArgs e)
{
...
PreparaStrutturaGriglia();
...
{
CreaFormatoGriglia();
}
}
protected void Bottone_Click(object sender, System.EventArgs e)
{
CreaFormatoGriglia();
}
In verità sono io che ho creato il problema... perchè la soluzione è:
protected void Page_Load(object sender, System.EventArgs e)
{
...
PreparaStrutturaGriglia();
...
{
// NON RICHIAMO PIU' IL METODO: CreaFormatoGriglia();
}
}
protected void Bottone_Click(object sender, System.EventArgs e)
{
CreaFormatoGriglia();
}
e il gioco è fatto (ihihihi).
Il mio capo però vuole che la griglia abbia, tra i suoi campi, un campo di tipo link che faccia scattare un dato evento.
protected void Page_Load(object sender, System.EventArgs e)
{
...
PreparaStrutturaGriglia();
...
{
// NON RICHIAMO PIU' IL METODO: CreaFormatoGriglia();
}
}
void CreaFormatoGriglia()
{
//... gestione del link button della griglia
//... associazione l'evento LinkCampoGriglia_Click al link button
}
protected void Bottone_Click(object sender, System.EventArgs e)
{
CreaFormatoGriglia();
}
protected void LinkCampoGriglia_Click(object sender, System.EventArgs e)
{
//... apro una popup
}
Ora, per come stanno le cose, se qualcuno volesse far click sul campo della griglia, l'evento non scatterebbe mai!
Al postback scattato dal click del link button, la griglia costruita a runtime al primo caricamento della pagina, viene nuovamente ricostruita.
Ma, come potete vedere, il riferimento all'evento viene perso, e in questo modo il popup non viene aperto poichè non entra nel metodo LinkCampoGriglia_Click(...).
Soluzione: Decommentare CreaFormatoGriglia() nel Page_Load
Nuovo Problema: Il filtro non mi funziona più.
Come vedete, mi sono incastrato per bene!!!
La soluzione che ora sto cercando io, è quella di capire per quale motivo il tutto viene filtrato al post successico... il problema non risulta banale e, considerando che non è mio il codice... e neanche chi lo ha sviluppato ha una vaga idea di cosa non va nel giro che si fa, è chiaro che ci vorra moooolto tempo prima che si risolva. Putroppo il sistema è molto complesso... parliamo dell'ordine di 1500 righe di codice.
Quello che chiedo a voi, è ben diverso.
protected void Page_Load(object sender, System.EventArgs e)
{
...
PreparaStrutturaGriglia();
...
if( /* E' stato cliccato il link button? */ )
{
CreaFormatoGriglia();
}
}
void CreaFormatoGriglia()
{
//... gestione del link button della griglia
//... associazione l'evento LinkCampoGriglia_Click al link button
}
protected void Bottone_Click(object sender, System.EventArgs e)
{
CreaFormatoGriglia();
}
protected void LinkCampoGriglia_Click(object sender, System.EventArgs e)
{
//... apro una popup
}
C'è un modo, per l'appunto, di capire chi ha fatto scattare l'evento da page_load, perchè fatto questo, intanto metto una "TOPPA" al problema, e con più calma, provo a riparere il problema principale.