2012-09-12 73 views
1

我想在一個固定的索引綁定一個GridView列於表元素固定索引列表元素,但我得到一個異常時,我執行Grid.DataBind();綁定的GridView列在

找不到字段或屬性從 選定的數據源名爲'Misure [0] .ID'。

自定義類別:

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(); 
    } 
+0

'DataField'應該是一個屬性名,所以很明顯「MISURE [0] .ID」是行不通的,但究竟什麼是你想怎麼辦? –

+0

在列表'Misure'中,我有一個可變數量的元素。我想爲每個元素添加五個網格列,並將這些元素的屬性數據放入這些列中。 – Pomp

+0

您不要爲每個項目添加列,而是爲整個列表添加列。添加列之後,您需要將列表綁定到網格。 –

回答

0

我使用更多的電網和表部分解決了我的問題。

我創建了一個主控件,並通過代碼添加了列。在那些列中放入其他GridViews。我選擇而不是GridView,因爲使用它的列更容易。

我必須將我的數據源分割成更多的列表,但從現在開始,我會選擇另一個結構來將我的數據從calc方法傳遞給可視化方法。

謝謝大家的幫助;)

+0

你能否包含一些代碼片段來詳細說明你是如何完成這個的? – Hannele