【发布时间】:2010-03-31 17:37:17
【问题描述】:
我正在尝试使用 EntityDataSource(后面的代码)填充 GridView,我需要能够对 GridView 进行排序。但是,当我排序时出现错误: 实体类型的元数据中不存在名为“aspnet_Users.UserId1”的属性 所以我相信这是因为我在后面的代码中生成了 where 参数:
ActiveEnqDataSource.WhereParameters.Add(new SessionParameter("aspnet_Users.UserId", TypeCode.Object, "UserName"));
完整代码是:
ActiveEnqDataSource.ConnectionString = db.Connection.ConnectionString;
ActiveEnqDataSource.DefaultContainerName = "Entities";
ActiveEnqDataSource.EntitySetName = "Enquiries";
ActiveEnqDataSource.Include = "UserCars.CarModel.CarMake, Category, aspnet_Users";
ActiveEnqDataSource.EnableUpdate = true;
ActiveEnqDataSource.EnableInsert = true;
ActiveEnqDataSource.EnableDelete = true;
ActiveEnqDataSource.AutoGenerateWhereClause = true;
ActiveEnqDataSource.WhereParameters.Add(new SessionParameter("aspnet_Users.UserId", TypeCode.Object, "UserName"));
有什么建议吗?非常感谢你!网格视图本身完美呈现,只有我无法对其进行排序,我添加的任何“whereParameters”,将 1 添加到属性,例如 UserId1、EnquiryStatus1、ProdauctName1。等等……
【问题讨论】:
-
WhereParameters 是用来过滤的,不是用来排序的,不是吗?您是否尝试使用 GridViewHeader 中的 LinkButtons 对 GridView 进行排序?如果是这样,如果您可以提供一段 GridView 标记,将会很有帮助。在您提供的代码中,我根本看不到任何排序。还是您的意思是您在添加 WhereParameter 后立即收到此错误?如果没有用户名的 Where 过滤器,它是否可以工作?
-
是的,如果没有用于过滤的 where 子句,它确实可以完美运行。标记是标准的,使用控制“标签”启用排序。实际上我已经通过在标记中放置 where 子句而不是代码隐藏来解决它。它确实有效。但是问题仍然存在,请打开为什么它不能从后面的代码中工作:)
标签: asp.net entity-framework entitydatasource