0

我正在尝试通过 linq 使用对象列表填充网格视图(我只想显示具有特定属性的某些对象)。

我得到错误...

异常详细信息:System.ArgumentNullException:值不能为空。参数名称:来源

源错误:

第 1364 行:returnInvoices = (List)Session["Invoices"]; 第 1365 行:第 1366 行:var partInvoices = from i in returnInvoices 第 1367 行:其中 i.PartNo == partNo 第 1368 行:选择新的源文件:c:\inetpub\wwwroot...\Form.aspx.cs 行:1366

protected void DoInvoicePopUp(string partNo)
{
    List<Invoice> returnInvoices = (List<Invoice>)Session["Invoices"];

    var partInvoices = from i in returnInvoices
                       where i.PartNo == partNo
                       select new
                       {
                           i.InvoiceID,
                           i.InvoiceNo,
                           i.InvoiceLine,
                           i.InvoiceDate,
                           i.OrderNo,
                           i.OrderLine,
                           i.OrderRel,
                           i.OrderLineItem,
                           i.OrderLineQty,
                           i.CustomerPO,
                           i.Serialized
                       };

    GridView3.DataSource = partInvoices;
    GridView3.DataBind();

    pnlBlanket.Visible = pnlInvoiceSearch.Visible = true;
}

我不确定我做错了什么。List 中有 200 多个对象,那么它怎么可能是 null 呢?

4

2 回答 2

1

看起来 Session["Invoices"] 是空的,如果它永远不应该是空的,你需要看看为什么会这样,如果它可以是空的,只需使用 as 关键字而不是强制转换,例如

List<Invoice> returnInvoices = Session["Invoices"] as List<Invoice>;

Session["Invoices"] 可能仍然为 null,但它不会在强制转换时抛出 null ref 异常,它只会让您看到 returnInvoices 为 null,然后您可以检查并处理它。

编辑

我会将上述内容作为一般建议,但实际上从堆栈跟踪来看,partNo 为空。

于 2012-12-13T14:30:12.913 回答
0
GridView3.DataSource = partInvoices.ToList()
于 2012-12-13T14:32:31.107 回答