2009-03-03 70 views
2

我正在嘗試將一個gridview綁定到使用存儲過程的sql查詢。當我運行該頁面時,出現以下錯誤:將LINQ查詢綁定到Gridview時獲取'數據源是無效類型'

數據源是無效類型。它必須是IListSource,IEnumerable或IDataSource。

var db = new TableItemDataContext(); 
var q = db.sp_SearchForItems("1","2","3","4"); 
GridView1.DataSource = q; 
GridView1.DataBind(); 

任何想法?

回答

3

使用ToList()擴展方法將查詢轉換爲項目列表。

GridView1.DataSource = q.ToList(); 

這也會在轉換時運行查詢的效果,因此您可能想看看是否只是投射到IEnumerable將會起作用。

編輯:根據評論線索進行說明。結果問題在於SPROC的構建以及LINQ無法檢測到返回值。根據Stored Procedure & LINQ, Dmbl File unable to interpret the result set更改SPROC允許LINQ檢測到可以將SPROC更改回來的模式。

+0

感謝您的快速回復!我使用了ToList(),但我沒有得到intellisense(但是使用System.Linq),並且在編譯時收到「'int'不包含'ToList'的定義,也沒有擴展方法'ToList'接受第一個arg的int類型可以找到。「想法? – 2009-03-03 03:20:16

相關問題