I’m trying bind a GridView Column to a List element at a fixed index, but I get an exception when I execute Grid.DataBind();:
Unable to find field or property named ‘Misure[0].ID’ from the
selected data source.
Custom Classes:
public partial class RowTabellaConcentrazioneGiornaliera
{
public DateTime Data { get; set; }
public string DataString { get; set; }
public List<MisuraConcentrazione> Misure { get; set; }
}
public partial class MisuraConcentrazione
{
public double MediaOraTQ { get; set; }
public double MediaOraNorm { get; set; }
public double ID { get; set; }
public string IVTQ { get; set; }
public string IVN { get; set; }
public string MeasureCod { get; set; }
public string DescrizioneParametro { get; set; }
}
GridView:
<asp:GridView ID="GridDatiConcentrazione" runat="server" AutoGenerateColumns="false" >
<Columns>
<asp:BoundField DataField="DataString" HeaderText="Ora" ItemStyle-Width="50px" ItemStyle-HorizontalAlign="Center" />
</Columns>
</asp:GridView>
Mehod:
protected void SetTabellaSintesiConcentrazioniGiornaliere(BFStat.BFStat _BFStat1, GridView Grid)
{
//Carica Griglia di sintesi concentrazione
List<RowTabellaConcentrazioneGiornaliera> y = _BFStat1.GetConcentrazioniOrarie();
int i = 0;
foreach (MisuraConcentrazione riga in y[0].Misure)
{
BoundField NewColonnaID = new BoundField();
NewColonnaID.HeaderText = "Ind. Disp.";
NewColonnaID.DataField = "Misure[" + i + "].ID";
Grid.Columns.Add(NewColonnaID);
BoundField NewColonnaValueTQ = new BoundField();
NewColonnaValueTQ.HeaderText = "Valore TQ";
NewColonnaValueTQ.DataField = "Misure[" + i + "].MediaOraTQ";
Grid.Columns.Add(NewColonnaValueTQ);
BoundField NewColonnaIVTQ = new BoundField();
NewColonnaIVTQ.HeaderText = "Validità TQ";
NewColonnaIVTQ.DataField = "Misure[" + i + "].IVTQ";
Grid.Columns.Add(NewColonnaIVTQ);
BoundField NewColonnaValueN = new BoundField();
NewColonnaValueN.HeaderText = "Valore N";
NewColonnaValueN.DataField = "Misure[" + i + "].MediaOraNorm";
Grid.Columns.Add(NewColonnaValueN);
BoundField NewColonnaIVN = new BoundField();
NewColonnaIVN.HeaderText = "Validità N";
NewColonnaIVN.DataField = "Misure[" + i + "].IVN";
Grid.Columns.Add(NewColonnaIVN);
i++;
}
Grid.DataSource = y;
Grid.DataBind();
}
I partially solved my problem using more grids and table.
I created a main control and added columns via code. Inside that columns I put other GridViews. I choose instead of a GridView becouse it’s easier to work with it’s column.
I had to elab my datasource splitting it in more lists but from now I’ll choose another structure for pass my data from the calc methods to the visualization methods.
Thanks everybody for the help 😉