【问题标题】:How can I manage a asp.net page in different states using an enum如何使用枚举管理处于不同状态的 asp.net 页面
【发布时间】:2009-10-14 16:04:01
【问题描述】:

全部

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

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

问题

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

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

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

【问题讨论】:

  • 我认为您应该在这里与我们分享您的代码。我感觉这可能是一个很容易修复的疏忽。

标签: asp.net vb.net page-lifecycle


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    所以我创建了自己的子组件,称为 createCheckBoxes,当页面状态正确更改时会调用它。

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

    【讨论】:

      猜你喜欢
      • 2018-07-16
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      相关资源
      最近更新 更多