我试图通过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?
答案 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()