Ciao a tutti
Ho creato un gridview con numero di celle che non era noto. Per far questo ho passato una struttura dati di questo tipo:
List<tipoGiorno> giorni
{
string colonna;
string titolo;
List<tipoRowTariffa >tariffe
{
decimal Costo;
string Livello;
}
}
Quando passo questi dati, il gridview mi crea in automatico solo le celle per colonna e titolo, mentre devo creare io le altre celle:
protected void grwTariffa_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.Visible = false;
}
else if (e.Row.RowType == DataControlRowType.DataRow)
{
tipoRowTariffa item = (tipoRowTariffa)e.Row.DataItem;
if (item != null)
{
e.Row.Cells[0].Visible = false;
foreach (tipoDatiTariffa cell in item.Giorni)
e.Row.Cells.Add(new TableCell());
}
}
}
e all'interno delle celle devo inserire delle textbox:
protected void grwTariffa_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
tipoRowTariffa dati = (tipoRowTariffa)e.Row.DataItem;
List<TableCell> row = new List<TableCell>();
TableCell cell = new TableCell();
tipoDatiTariffa day_dati = new tipoDatiTariffa();
int i = 0;
switch (e.Row.Cells[0].Text)
{
case "tariffa":
i = 2;
foreach (DateTime day in dati.Giorni.Select(item => item.Giorno))
{
day_dati = dati.Giorni.Find(item => item.Giorno == day);
TextBox txt = new TextBox();
txt.ID = "txtTariffa";
txt.Text = day_dati.Costo.ToString();
e.Row.Cells[i].Controls.Add(txt);
i++;
}
break;
}
}
}
Dopo che l'utente ha modificato i dati nella textbox, vorrei recuperare i dati e salvarli nel db, ma quando provo a leggere le celle del gridview al postback, ho solo 2 celle: colonna e titolo. Perdo tutte le celle che ho creato in RowCreated.
Ho provato a inserire il DataBind del gridview fuori dal !Page.IsPostBack, ma ricevo un errore perchè le textbox esistono già.
Come posso recuperare i dati presenti nel gridview?
La procedura di creazione del gridview è esatta?
Grazie mille