0

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

4

1 回答 1

0

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

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

于 2013-07-29T14:42:50.643 回答