ASPxGridView页面适用于某些用户,而不适用于其他用户。 WebForm模型使用C#,ASP,SQL Express

时间:2012-12-01 00:53:41

标签: webforms devexpress aspxgridview

我对此很陌生,所以请光临我。我正在调试一个基于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">

问题是大多数用户都可以登录并且页面工作正常,但是少数用户在Web浏览器中看到以下错误:

  

在所选数据源中找不到名为“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角色,但每个用户都可以访问所选表中的数据。

感谢您提供的光线。

-Ben

1 个答案:

答案 0 :(得分:2)

因为ASPxGridView缓存了这些列。

在您的情况下,您的数据源是动态的,即不同用户的数据源。

确保在绑定ASPxGridView之前清除列。

清除列:

agvObject.Columns.Clear();