1

全部

我遇到了似乎是 ASP.NET 页面生命周期问题。我目前在我的页面中嵌入了一个用户控件。现在,根据从菜单项列表中选择的选项,页面可以处于控件中的 PageStates Enum 表示的三种状态之一。选择菜单项的页面仅更新从控件公开的 a 属性

  • 初始状态(不可配置)
  • 编辑(这使用下拉扩展器并使其中的网格视图可见)
  • 添加(这使用另一个下拉扩展器并使相同的gridview可见,但是具有不同的属性)

问题

  1. 如果菜单项被选中两次,页面只会进入正确的“状态”
  2. 控件在不应该出现时在 gridview 上可见
  3. 页面“状态”似乎落后一个状态

我认为我遇到的主要问题是如果页面处于添加模式,网格视图会绘制复选框,但是您需要选择两次添加菜单项选项才能使其进入此状态,我相信这是因为我我在选择菜单项时设置页面状态但是此时已经创建了网格行(我在 RowCreated 事件内的网格​​视图中动态创建复选框

有人对我如何解决这个问题有任何建议吗?这个实现可以工作吗?

4

2 回答 2

1

如果您的控件正在触发改变状态的事物,并且您正在重绘 page_load 事件,那么在触发控件事件之前,您的状态不会更新。将页面构建移动到生命周期中的 page_prerender 或类似事件。

如果您需要更多关于触发页面事件的顺序的帮助,请将 Trace="true" 添加到您的 aspx 页面中的页面指令中。

于 2009-10-13T12:26:00.327 回答
0

我设法通过以下方式解决了这个问题。

根本问题是我在更新页面状态之前发生的 RoWCreated 事件上创建了我的复选框。

因此,我创建了自己的子程序,称为 createCheckBoxes,当页面状态正确更改时会调用该子程序。

在我最初的调查中,这以最小的性能开销解决了我的问题

于 2009-10-14T08:04:01.317 回答