2009-03-03 57 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

相关问题