2012-12-13 60 views
0

我想通過linq(我只想顯示特定的對象與特定的屬性)的對象列表填充gridview。gridview數據綁定與linq查詢錯誤

我的錯誤...

Exception Details: System.ArgumentNullException: Value cannot be null. Parameter name: source

Source Error:

Line 1364: returnInvoices = (List)Session["Invoices"]; Line 1365: Line 1366: var partInvoices = from i in returnInvoices Line 1367: where i.PartNo == partNo Line 1368: select new Source File: c:\inetpub\wwwroot...\Form.aspx.cs Line: 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; 
} 

我不知道我在做什麼錯。列表中有200多個對象,那麼它怎麼可能是空的?

回答

1

貌似會話[「發票」]爲空,如果它不應該是零,你需要看看這是爲什麼hapening,如果是罰款,它是空只使用例如鑄造的作爲關鍵字,而不是

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

會議[「發票」]可能仍然爲空,但它不會扔在投空裁判例外,它只是你只會看到returnInvoices爲空,然後你就可以檢查並處理。

編輯

我預訂購離開上述作爲一般的建議,但實際上從堆棧跟蹤它看起來像PARTNO爲空。

+0

感謝您的指針!事實證明有一些代碼使會話列表爲空。這一點是固定的,但我現在有另一個問題,我將開始一個新的職位。 :) – Stuart

0
GridView3.DataSource = partInvoices.ToList() 
+0

這隻會強制partInvoices枚舉早些時候給出相同的錯誤,但在該行,而不是當GridView是數據綁定。 –