【问题标题】:c# WPF datagrid databinding errorc# WPF datagrid数据绑定错误
【发布时间】:2016-07-16 11:30:47
【问题描述】:
<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`

*错误信息是

"Message = "列'温度'不属于表。"

我不知道为什么会发生这个错误。 这在其他项目中效果很好,这也是第一次发生此错误。 我想有一些我没有注意到的东西。让我知道为什么这段代码不起作用。

【问题讨论】:

  • 你的SetDataGrid方法是在DisplayResult方法之前调用的吗?

标签: c# wpf data-binding error-handling datagrid


【解决方案1】:

问题是您从未向RawDataTable 添加列,在下面的代码中,sn-p 创建了一个新的DataTable,但将列添加到ResultTable(不同的表)。

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

应该是..

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

【讨论】:

    【解决方案2】:

    这是因为你在添加列时打错了数据表名。

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

    它应该是“RawDataTable”而不是“ResultDataTable”。

    【讨论】:

      【解决方案3】:

      您不要将 TemperatureIntegratedVoltage 列添加到 RawDataTable,而是:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-25
        • 1970-01-01
        • 2016-10-07
        • 1970-01-01
        • 2011-09-18
        • 2011-05-06
        • 2012-08-17
        • 2011-06-15
        相关资源
        最近更新 更多