试图向Telerik RadGrid添加空白行时出现空引用异常
本文关键字:异常 引用 空白 Telerik RadGrid 添加 | 更新日期: 2023-09-27 17:52:59
有人能告诉我为什么我一直得到一个NULL引用异常时,试图执行下面的添加?这只发生在ObservableCollection
开始为空的时候。如果集合中从一开始就有数据,则可以正常工作。
加载ObservableCollection
,设置采集ViewSource
:
private void LoadCodeSets()
{
this.codeSetData = new ObservableCollection<CodeSet>();
var query = from c in context.CodeSets
where c.LogicallyDeleted == 0
orderby c.CodeSetID ascending
select c;
foreach (CodeSet c in query)
{
this.codeSetData.Add(c);
this.codeSetView = (ListCollectionView)CollectionViewSource.GetDefaultView(codeSetData);
this.codeSetRadGridView.ItemsSource = this.codeSetView;
}
}
将新记录添加到空数据网格
private void Add_CodeSet_Click(object sender, RoutedEventArgs e)
{
try
{
bool doesCodeSetExist = false;
if (codeSetView == null)
{
codeSetView.AddNewItem(new CodeSet());
}
else
{
foreach (CodeSet cs in codeSetView)
{
if (cs.CodeSetID == 0)
{
doesCodeSetExist = true;
this.lblMessages.Foreground = Brushes.Red;
this.lblMessages.FontWeight = System.Windows.FontWeights.ExtraBold;
this.lblMessages.Content = "Please fill in new user form and click Save User.";
this.lblMessages.Visibility = Visibility.Visible;
}
}
if (!doesCodeSetExist)
{
CodeSet newCodeSet = new CodeSet();
codeSetView.AddNewItem(newCodeSet);
}
}
}
catch (Exception ex)
{
Error.LogError(ex);
}
}
看起来是这段代码导致了这个问题
if (codeSetView == null)
{
codeSetView.AddNewItem(new CodeSet());
}
如果codeSetView
为null
,则不能使用codeSetView.AddNewItem
。您必须在添加项目之前启动codeSetView
。
,
if (codeSetView == null)
{
codeSetView = new ...... or (ListCollectionView)CollectionViewSource.GetDefaultView(codeSetData);
codeSetView.AddNewItem(new CodeSet());
}