我已将此发布到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属性,但到目前为止还没有任何工作。
答案 0 :(得分:0)
显然,问题与在两个页面上的UserControl上具有相同的ID有关。似乎控件被缓存并重新加载,好像它是完全相同的控件,尽管它位于不同的页面上。
我不确定这是否适用于我特定问题以外的任何问题,但如果您在自己的项目中遇到过类似的问题,那么值得一试。