【发布时间】:2019-09-07 00:16:55
【问题描述】:
我正在调试一个基于 WebForms 模型构建的网站,使用 ASP、C# 作为代码隐藏和 SQL Express 2008 R2。我正在尝试调试一个使用 ASPxGridView 的页面,该页面是从 .aspx 文件中填充的,并且使用的数据集也是在那里创建的。使用
选择数据 SelectCommand="SELECT MachineID, ProgramNo, (CONVERT (VARCHAR(19), Start, 120)) as Start,(CONVERT (VARCHAR(12), Stop,114)) as StopTime, WorkCount, PartCount as TotalWorkCount,(CONVERT (VARCHAR(12), Stop-start,114)) as PartCycle FROM Program WHERE (MachineID = @MachineID) AND (WorkCount > 0) AND (CONVERT (VARCHAR(19), Start, 120) >= @StartDate) AND (CONVERT (VARCHAR(10), Start, 120) <= @EndDate) order by Start Desc">
问题是大多数用户都可以登录并且页面运行正常,但少数用户在网络浏览器中看到以下错误:
在所选数据源中找不到名为“PartCycle”的字段或属性。此错误的可能原因可能如下: 网格列名称拼写错误或不区分大小写;将错误或未正确初始化的数据源分配给网格。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Web.HttpException:在所选数据源中找不到名为“PartCycle”的字段或属性。此错误的可能原因可能如下: 网格列名称拼写错误或不区分大小写;将错误或未正确初始化的数据源分配给网格。
来源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常来源和位置的信息。
堆栈跟踪:
[HttpException (0x80004005):在所选数据源中找不到名为“PartCycle”的字段或属性。此错误的可能原因可能如下: 网格列名称拼写错误或不区分大小写;将错误或未正确初始化的数据源分配给网格。] DevExpress.Web.Data.WebDataControllerProvider.GetRowValueByControllerRow(Int32 controllerRow, String fieldName, Boolean isDesignTime) +300 DevExpress.Web.Data.WebDataControllerProvider.GetRowValue(Int32 visibleIndex, String fieldName, Boolean isDesignTime) +203 DevExpress.Web.Data.WebDataProxy.GetRowValue(Int32 visibleIndex, String fieldName) +77
如您所见,PartCycle 不是表中的列,而是用作 (CONVERT (VARCHAR(12), Stop-start,114)) 的别名。为了改变情节,当我以管理员身份登录网站时,我可以很好地查看问题数据。看到此错误的用户拥有不同的 ASPNET 角色,但每个人都可以访问所选表中的数据。
【问题讨论】:
-
也许你超出了 SQL Server Express 的限制?数据库的最大大小 - 4GB,CPU 插槽 - 1 和内存量 - 1GB
-
首先 - 我在查询中没有看到“PartCycle”字段。该字段可能在 gridView 中被重命名。检查 GridView 设计器或代码中的列。其次 - 有些用户可能正在查看不同的页面。 - 这是托管在 webfarm 环境中吗?
-
@Boris Gappov,我使用的是 SQL Server 2008 R2,它的最大数据库大小为 10GB。我不确定它使用了多少内存。
-
@Saif Khan, PartCycle 在查询中:'...(CONVERT (VARCHAR(12), Stop-start,114)) as PartCycle FROM Program WHERE...'。我检查了 GridView 列,代码看起来没问题。该站点托管在单个服务器上。
-
请写数据源标记
标签: webforms devexpress aspxgridview