数据网格上的NullReferenceException

时间:2013-03-13 16:11:38

标签: c# wpf exception listbox

我在WPF用户控件中有一个datagrid(DevExpress)

dg_VQ是数据网格名称

我有一个列表框lst_REQ_LIST

在SelectionChanged中,我重新加载2个数据网格

_load_data中的行 this.dg_VQ.ItemsSource = null;

是发生异常的地方。 它发生的方式是让我难以置信的 如果我在列表中选择一个项目,那么无论我选择了多少次都无效。 但是,只要我选择了一个在网格中有数据的iem然后我在列表中选择另一个项目就会引发错误。

这是愚蠢的部分,如果我停下来就行了。它几乎就像是在等待某个东西在另一个线程中完成,但是没有已知的旋转线程。在常规中,捕获物永远不会被击中。

它只会弹出一个带有异常

的消息框

使用数据类

    private void lst_REQ_LIST_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (lst_REQ_LIST.SelectedValue == null) { return; }
        _selection_changed();
    }
    private void _selection_changed()
    {
        string sGUID = lst_REQ_LIST.SelectedValue.ToString().ToUpper();
        req_guid = new Guid(sGUID);
        quote_guid = new Guid("{00000000-0000-0000-0000-000000000000}");
        _load_data();
    }
    private void _load_data()
    {
        try
        {
            // Load the top grid
            this.dg_VQ.ItemsSource = null;
            this.dg_VQ.ItemsSource = dbP.tbl_vendor_quote_requests
                .Where(x => x.requisition_guid == req_guid);
            this.dg_VQ.RefreshData();

            // Load the bottom grid
            this.dg_VQ_DTL.ItemsSource = null;
            this.dg_VQ_DTL.ItemsSource = db.tbl_vendor_quote_request_dtls
                .Where(x => x.vendor_quote_request_guid == quote_guid)
                .OrderBy(x => x.item_number);
            this.dg_VQ_DTL.RefreshData();
        }
        catch (Exception e)
        {
            throw e;
        }
    }

1 个答案:

答案 0 :(得分:0)

例外情况告诉您this.dg_VQnull。确保您已将该字段设置为实际值,使用

包装逻辑
if (this.dg_VQ != null)
{
    ...
}

这不会解决原始问题,但会阻止代码中出现NullReferenceException