gridview数据绑定与linq查询错误

时间:2012-12-13 14:24:32

标签: c# asp.net linq list object

我试图通过linq填充带有对象列表的gridview(我只想显示具有特定属性的某些对象)。

我收到了错误......

  

异常详细信息:System.ArgumentNullException:值不能为null。   参数名称:source

     

来源错误:

     

第1364行:returnInvoices =(列表)会话[“发票”];   1365行:   第1366行:var partInvoices =来自i的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?

2 个答案:

答案 0 :(得分:1)

看起来Session [“Invoices”]为null,如果它永远不应为null,你需要查看为什么这是hapening,如果它为null就好了只需使用as关键字而不是强制转换,例如

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

会话[“Invoices”]可能仍然为null,但它不会在演员表上抛出null ref异常,只会看到returnInvoices为null,然后您可以检查并处理。

修改

我将保留以上作为一般建议,但实际上从堆栈跟踪看起来partNo为null。

答案 1 :(得分:0)

GridView3.DataSource = partInvoices.ToList()