0

以下の追加を実行しようとすると、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);
    }
}
4

1 に答える 1

1

このコード ブロックが問題を引き起こしているようです

if (codeSetView == null)
{
    codeSetView.AddNewItem(new CodeSet());
}

codeSetView使用nullできない場合codeSetView.AddNewItemcodeSetViewアイテムを追加する前に開始する必要があります。

例えば:

if (codeSetView == null)
{
    codeSetView = new ...... or (ListCollectionView)CollectionViewSource.GetDefaultView(codeSetData);
    codeSetView.AddNewItem(new CodeSet());
}
于 2013-01-15T02:15:33.637 に答える