2016-03-29 9 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` 

*エラーメッセージがあるC#のWPFのデータグリッドのデータバインディングエラー

「メッセージ= "列 '温度' テーブルに属していません。"

Iドン これは他のプロジェクトでもうまくいきますが、このエラーが発生したのは初めてです。 気付かなかったことがあると思います。なぜこのコードが機能しないのか教えてください。

+0

であるべきでは 'DisplayResult'メソッドの前に呼び出さあなた' SetDataGrid'方法ですか? –

答えて

1

RawDataTableに列を追加しないでください。次のコードでは、新しいDataTableが作成されましたが、列はResultTable(別の表)に追加されています。

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

..

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

ここに野生の推測があります。これを変更するべきではありません: DataRow row2 = ResultTable.NewRow();

これまで: DataRow row2 = RawDataTable.NewRow();

温度欄が定義されているのを確認してください。

0

代わりに、RawDataTableにTemperatureIntegratedVoltage列を追加しないでください:

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

ありがとうございます。私はちょうどこのコードに愚かな間違いをした –

0

列を追加するときに、データテーブル名を誤って入力しているためにです。

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

'RawDataTable'は 'ResultDataTable'でなくてはなりません。