我已经将此发布到 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 属性,但到目前为止没有任何效果。