2016-03-29 28 views
1
<DataGrid x:Name="RawDataGrid" Margin="5,-109,5,5" BorderThickness="1 1 1 1" CanUserAddRows="False" CanUserReorderColumns="False"> 
       <DataGrid.Columns> 
        <DataGridTextColumn Width="190" Header="Temperature"   Binding="{Binding Temperature}"  /> 
        <DataGridTextColumn Width="190" Header="IntegratedVoltage" Binding="{Binding IntegratedVoltage}" /> 
       </DataGrid.Columns> 
</DataGrid> 

public static void SetDataGrid() 
     { 
      ResultTable = new DataTable(); 
      ResultTable.Columns.Add("Contents") ; 
      ResultTable.Columns.Add("Low")  ; 
      ResultTable.Columns.Add("Mid")  ; 
      ResultTable.Columns.Add("High")  ; 

      RawDataTable = new DataTable(); 
      ResultTable.Columns.Add("Temperature")  ; 
      ResultTable.Columns.Add("IntegratedVoltage"); 
     } 

     public static void DisplayResult(DataClass data) 
     { 
      try 
      { 
       if (ResultTable.Rows.Count != 0) 
       { 
        ResultTable.Rows.Clear(); 
       } 

       DataRow row1 = ResultTable.NewRow(); 
       row1["Contents"] = "Ratio"; 
       row1["Low"] = string.Format("{0:F2}" , data.Ratio_LM.ToString()); 
       row1["Mid"] = string.Format("{0:F2}" , data.Ratio_MH.ToString()); 
       row1["High"] = 1; 
       ResultTable.Rows.Add(row1); 

       DataRow row2 = ResultTable.NewRow(); 
       row2["Contents"] = "Temperature"; 
       row2["Low"]  = string.Format("{0:F2}" , data.BDTemp_Mdw.ToString()); 
       row2["Mid"]  = string.Format("{0:F2}" , data.BDTemp_Mup.ToString()); 
       row2["High"]  = ""; 
       ResultTable.Rows.Add(row2); 

       if (RawDataTable.Rows.Count != 0) 
       { 
        RawDataTable.Rows.Clear(); 
       } 

       for (int i = 0; i < data.IntegratedVoltList.Count; i++) 
       { 
        DataRow row = RawDataTable.NewRow(); 
        **row["Temperature"]  = string.Format("{0:F2}", data.TempList[i].ToString())**   ; // Error 
        row["IntegratedVoltage"] = string.Format("{0:F2}", data.IntegratedVoltList[i].ToString()) ; 
        RawDataTable.Rows.Add(row); 
       } 
      } 
      catch (Exception e) 
      { 
      } 
     } 
     #endregion 
    }`enter code here` 

* Hata mesajıC# WPF datagrid veri bağlama hatası

"Mesaj = "Kolon 'Sıcaklık' tablosunun ait değil."

ı don Bu hatanın neden oluştuğunu bilmiyorum Bu, diğer bir projede iyi çalışır, ayrıca bu hata ilk kez oluştu.Sanırım fark etmediğim bir şey var. Bu kodun neden çalışmadığını bana bildirin.

+0

sizin 'SetDataGrid' yöntem' DisplayResult' yönteminden önce denir mi? –

cevap

1

Sorun, RawDataTable koduna hiçbir zaman aşağıdaki kod snippet'ine yeni DataTable oluşturuldu, ancak sütunlar ResultTable (farklı bir tabloya) eklenmiştir.

RawDataTable = new DataTable(); 
ResultTable.Columns.Add("Temperature")  ; 
ResultTable.Columns.Add("IntegratedVoltage"); 

olmalı ..

RawDataTable = new DataTable(); 
RawDataTable.Columns.Add("Temperature")  ; 
RawDataTable.Columns.Add("IntegratedVoltage"); 
0

Vahşi tahmin burada. Bunu değiştirmemelisiniz: DataRow row2 = ResultTable.NewRow();

Bunu yapmak için: DataRow row2 = RawDataTable.NewRow();

Sıcaklık sütununun nerede tanımlandığını görüyor musunuz?

0

yerine, RawDataTable için Temperature ve IntegratedVoltage sütunları katmayan: sütun eklerken veri tablosu adını yanlış yazmış çünkü

 RawDataTable = new DataTable(); 
     ResultTable.Columns.Add("Temperature")  ; // Wrong data table 
     ResultTable.Columns.Add("IntegratedVoltage"); // Wrong data table 
+0

Teşekkürler. Ben sadece bu kod lol aptalca hata yaptım –

0

öyle.

RawDataTable = new DataTable(); 
ResultTable.Columns.Add("Temperature")  ; 
ResultTable.Columns.Add("IntegratedVoltage");' 

'RawDataTable' değil 'ResultDataTable' olmalıdır.