用户控件中的ASPxGridView导致缓存问题?

时间:2013-07-08 13:58:49

标签: asp.net caching user-controls devexpress aspxgridview

我已将此发布到DevExpress支持,但由于我对他们解决问题的能力毫无信心,我将在此处发布。

我有一个包含ASPxGridView的用户控件,其第一列我需要隐藏,具体取决于控件上定义的属性的值。该属性获取传入的值并将其分配给网格的Visible属性。

在一个页面上,我将此属性设置为True;另一个,错误。当我访问首先隐藏列的页面并导航到另一页时,该列保持隐藏状态。当我访问首先应该可见的页面然后导航到另一个页面时,它会抛出错误b / c列定义如下:

<dx:GridViewDataTextColumn Caption="Employee" FieldName="TSLinkText" VisibleIndex="0">
    <DataItemTemplate>
       <a href='<%#GlobalHelper.GetTimesheetURL(Eval("TimesheetID"), Eval("EmployeeID"), Eval("HasTSLink")) %>'
          title='View the current timesheet for <%#Eval("TSLinkText")%>'>
      <%#IIf(Eval("HasTSLink") = -1, Eval("TSLinkText"), "")%></a>
      <%#IIf(Eval("HasTSLink") = 0, Eval("TSLinkText"), "")%>
     </DataItemTemplate>
    <CellStyle Wrap="False" />
</dx:GridViewDataTextColumn>
                        ​

我在每个页面上定义了不同的数据源,并且在隐藏列的页面上,检索数据的过程没有“HasTSLink”字段,这就是抛出错误的原因。

对我而言,似乎正在缓存用户控件。我尝试了一些不同的方法,包括调整部分缓存的VaryByControls属性,但到目前为止还没有任何工作。

1 个答案:

答案 0 :(得分:0)

显然,问题与在两个页面上的UserControl上具有相同的ID有关。似乎控件被缓存并重新加载,好像它是完全相同的控件,尽管它位于不同的页面上。

我不确定这是否适用于我特定问题以外的任何问题,但如果您在自己的项目中遇到过类似的问题,那么值得一试。