"LudovicoVan" <
ju...@diegidio.name> wrote in
news:jdch2r$jg3$
1...@speranza.aioe.org:
> "Paolo opg" <
spamc...@tiscali.it> wrote in message
> news:Xns9FC38967BCE92sp...@193.43.96.1...
>> ciao a tutti,
>>
>> ho bisogno di un aiuto per capire come gestire due gridview nella
>> stessa pagina aspx.
>>
>> ho in pratica un master e sul rowdatabound modifico il contenuto di
>> una cella a seconda del valore del sottostante dataitem.
>
> Cosa vuol dire che "modifichi" il contenuto della cella? Stai
> parlando di un template oppure proprio crei e aggiungi controlli
> dinamicamente?
>
[cut]
clear della cella, creo un nuovo oggetto e lo aggiungo alla collection dei
controlli della cella:
protected void GV_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Image Esito = new Image();
Esito.ImageUrl = "~/immagini/pin-orange.png";
Esito.ToolTip = "In attesa";
TableCell Cella = e.Row.Cells[7];
Cella.Controls.Clear();
Cella.Controls.Add(Esito);
}
}
>
>> a naso direi che il giro non fa una grinza, perche' il databind non
>> dovrebbe avvenire quando seleziono una riga.
>
> Dipende: se stai usando sintassi dichiarativa (i template), e se il
> view-state e' abilitato, la griglia rimane popolata ai post-back, ma
> se il view-state e' disabilitato il data-bind va rifatto, altrimenti
> ti ritrovi una griglia vuota. A complicare ulteriormente la cosa c'e'
> da considerare che se stai creando ed aggiungendo controlli
> dinamicamente, al post-back questi devono essere ripristinati
> altrimenti non ci sono piu' (che il view-state sia abilitato o meno),
> e dovrebbero essere ripristinati nell'Init, altrimenti il view-state
> anche se e' abilitato va perso...
>
> Per maggiori dettagli, dovresti postare il proverbiale minimo codice
> che riproduce il problema.
>
> -LV
>
>
la griglia rimane popolata con i dati corretti, perche' e' associata a una
sqldatasource e il suo postback viene gestito correttamente.
la rogna e' una e una sola colonna che modifico sull'evento rowdatabound
col codice di cui sopra: di default si tratta di una checkbox che io
elimino e sostituisco con una immagine.
dopo un consulto con mister google ho deciso comunque di cambiare strada,
perche' mi son reso conto di avere imboccato una strada inutilmente
complicata.
nel mio caso in particolare non ho necessita' di un controllo, perche' devo
visualizzare una informazione e non mi serve che l'utente interagisca con
l'immagine che vado a inserire nella griglia.
ho risolto cosi':
protected void GV_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string ImgSrc = Page.ResolveClientUrl("~/path/to/img");
string ImgAlt = "Tooltip";
TableCell Cella = e.Row.Cells[7];
Cella.Controls.Clear();
Cella.Text = "<img src='" + ImgSrc + "' alt='" + ImgAlt + "'/>";
}
}
in questo modo l'immagine persiste dopo il postback ^^
e' una soluzione 'soluzione' oppure e' un accrocchio?