ciao a tutti, sto lavorando su una applicazione web con il .net 4 e ho in una pagina problemi a gestire una lista di checkbox creata a runtime.
in fase di caricamento pagina io creo la lista di checkbox in base ad un db
foreach (DataRow riga in dsGenerale.Tables["Informazioni"].Rows)
{
CheckBox ctrlChk = new CheckBox();
ctrlChk.ID = "chkInfo_" + riga.Field<int>("ID");
TableCell tc1 = new TableCell();
tc1.Controls.Add(ctrlChk);
TableCell tc2 = new TableCell();
tc2.Text = riga.Field<string>("Informazione");
TableRow tr = new TableRow();
tr.Cells.Add(tc1);
tr.Cells.Add(tc2);
tblInformazioni.Rows.Add(tr);
}
senza fare nulla di particolare quando attivo un checkbox e poi faccio un submit, mi ritrovo il checkbox ancora selezionato correttamente nella pagina di risposta (se stessa), quindi per fortuna non ho i problemi di stato che ho letto essere comuni in questi casi
il problema è però il seguente: nel caso in cui io selezioni una riga da una datagrid (non MS ma Componentart) scateno un postback e vado a caricare da db dei valori per vari campi della pagina, tra i quali sono compresi anche i checkbox runtime.
Osservando in debug vedo che la funzione di creazione dei checkbox viene caricata per prima nel Page_Load e poi successivamente viene chiamata la routine di gestione del caricamento da db, tuttavia questa routine non ha un reale effetto sui checkbox che rimangono tutti deselezionati.
// esplora la tabella informazioni runtime
foreach (TableRow tr in tblInformazioni.Rows)
{
((CheckBox)tr.Cells[0].Controls[0]).Checked = true;
CheckBox chkBox = (CheckBox)tr.Cells[0].Controls[0];
string idInfo = chkBox.ID.Substring(8);
if (listaIR.Contains(idInfo))
chkBox.Checked = true;
else
chkBox.Checked = false;
}
// perchè non funziona???
qualcuno ha un suggerimento? grazie