【发布时间】:2017-09-06 07:36:29
【问题描述】:
我有以下代码来为我的 Asp.net gridview 填充数据。我在其他 asp.net 页面中使用与以下相同的代码将数据加载到 gridview。所有其他页面都可以使用代码并成功显示带有数据的gridview。但是在一个页面中,显示客户购买的产品列表,它显示错误。 这是我的代码。
using (DataContext.DBEntities ctx = new DataContext.DBEntities())
{
List<DataContext.vwClientAndProduct> product = new List<DataContext.vwClientAndProduct>();
product = ctx.SP_ClientAndProduct_Select().ToList<DataContext.vwClientAndProduct>();
gvList.DataSource = product.ToList();
gvList.DataBind();
}
我跟踪了错误页面的代码,它成功通过了gvList.DataBind()方法。但是当我继续 F5 时,我的 product.aspx 页面中显示错误消息。错误以“不支持直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery、DbRawSqlQuery)的数据......”开始。
以下每一项都不起作用。
var product = (from row in ctx.SP_ClientAndProduct_Select()
select row).ToList();
//var product = from row in ctx.SP_ClientAndProduct_Select()
select row;
//var product = ctx.SP_ClientAndProduct_Select().ToList();
gvList.DataSource = product.ToList();
gvList.DataBind();
另一个页面与以下内容很好地配合。
using (DataContext.DBEntities ctx = new DataContext.DBEntities ())
{
var product = ctx.SP_Product_Select().ToList()
gvList.DataSource = product.ToList();
gvList.DataBind();
}
虽然代码相同,但我不知道为什么这不起作用。
请帮忙。 谢谢
【问题讨论】:
-
为什么在第一个输入
DataContext.vwClientAndProduct,而第二个不用?我认为DataContext是这里的罪魁祸首,因为它与EF 的上下文有关,并且在绑定到GridView 的DataSource属性时,该上下文不能用作List 的类型参数。 -
但是为什么它可以在其他页面中工作对我来说很奇怪。
标签: asp.net entity-framework data-binding