簡體   English   中英

編輯 System.NullReferenceException 時使用 DataTable 的 Datagrid 綁定:“未將對象引用設置為對象的實例。”

[英]Datagrid binding using DataTable on edit System.NullReferenceException: 'Object reference not set to an instance of an object.'

在編輯數據網格時拋出空異常,對於使用數據表的數據網格綁定,在xaml.cs 中填充數據表代碼如下。 數據表綁定正在編輯演示框架中的單元格 Null 異常,使用的框架是 .NET 4.6

//DataTable created in xaml.cs, 
private DataTable _dataTable3cross3 = new DataTable("table3cross3");
public DataTable DataTable3cross3
{
get { return _dataTable3cross3; }
set
{
_dataTable3cross3 = value;
OnPropertyChanged("DataTable3cross3");
}
}
//Xaml
<DataGrid x:Name="grid1" Margin="10" Grid.Column="0" Grid.Row="2"
ItemsSource="{Binding}" BorderThickness="2" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
HeadersVisibility="Column" GridLinesVisibility="All"
CanUserAddRows="False" CanUserDeleteRows="False" 
CanUserSortColumns = "False" CanUserReorderColumns="False"
CanUserResizeColumns="False" CanUserResizeRows="False" 
RowHeight="36" AutoGenerateColumns="True" AutoGeneratingColumn="r2_AutoGeneratingColumn" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" />

//xaml.cs
private void CreateTable()
{
try
{
//Clearing the columns to update the with new values
_dataTable3cross3.Clear();
_dataTable3cross3.Columns.Clear();
// Adding columns
for (int i = 0; i <= 3; i++)
{ 
if (i == 0)
{
this._dataTable3cross3.Columns.Add("Ranges Values");
}
else
{
this._dataTable3cross3.Columns.Add("T" + i.ToString() + " " + "[c]");
}
}
//Rows added from list
if (TempRangeGasValues3x3.Count > 0)
{
this._dataTable3cross3.Rows.Add(12, 13, 14, 15);
}
if (PressRangeGasValues3x3.Count > 0 && CompZValues3x3.Count > 0)
{
this._dataTable3cross3.Rows.Add(1, 2, 3, 4);
this._dataTable3cross3.Rows.Add(5, 6, 7, 8);
this._dataTable3cross3.Rows.Add(9, 6, 3, 4);
}
grid1.DataContext = DataTable3cross3;
}
catch (Exception ex)
{
}
}

//[以下是數據網格編輯的例外][1]

//[1]: https://i.stack.imgur.com/uJt2w.png

刪除列中的額外空格或字符串將解決問題

this._dataTable3cross3.Columns.Add("T" + i.ToString());

或將“[]”大括號更改為“(c)”也將解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM