【发布时间】:2016-11-17 13:28:33
【问题描述】:
我有一个 ASP.NET、WebForms Web 应用程序,并且我正在使用实体框架。
我需要将一些数据从 DB 放到 GridView,但是当我将最基本的代码添加到 GridView 的 List.aspx 页面时,我收到错误消息“无法加载类型'报告'”错误:
<asp:GridView ID="gvReports" runat="server" ItemType="Report" SelectMethod="gvReports_GetData"></asp:GridView>
我正在使用的包:
package id="EntityFramework" version="6.1.3" targetFramework="net452" />
package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" />
package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net452" developmentDependency="true" />
SelectMethod 看起来像这样:
public IQueryable<Report> gvReports_GetData()
{
FinReports_ConceptEntities db = new FinReports_ConceptEntities();
return db.Reports;
}
编辑我按照这个教程 https://www.asp.net/web-forms/overview/presenting-and-managing-data/model-binding/retrieving-data
【问题讨论】:
-
你能显示报表模型类吗?
-
是的,但我不明白这有什么关系。类报告是通过数据库优先模型从实体自动生成的,并且没有被编辑,并且 GridView 应该自动为该类生成列,因为 AutomaticalyGenerateColumns 为真。简而言之,一切都是自动生成的,我不可能在这些自动生成的组件的代码隐藏中犯错误。
-
将 AutoGenerateColumns="True" 属性添加到您的网格视图。您还可以在 ItemType="ProjectName.FolderName.Report" 中添加命名空间
-
我也犯了同样的错误。我确实相信这些变量有一些默认值,如果没有提及它们,它们将具有该默认值,因此如果 AutoGenerateColumns 的默认值已经为 true,则无需说 AutoGenerateColumns="True"。
-
@mww 说使用
ProjectName.FolderName.Report是一种误导。您应该使用命名空间,它并不总是与ProjectName.FolderName对齐。