gpt4 book ai didi

asp.net - 事件处理后如何更新页面数据?

转载 作者:行者123 更新时间:2023-12-01 07:32:39 25 4
gpt4 key购买 nike

在 Page_Init 上,我基于几个数据库表创建了一个动态创建的控件表。其中一个控件是用于将列表项向上移动的 ImageButton。此事件处理程序所做的是更新数据库中受影响项目的 SortOrder 列。

现在的问题是,由于控件是在 Page_Init 事件中创建的,并且 SortOrder 稍后会在 ImageButton 命令事件被触发时更新。使用正确的 SortOrder 更新表的最佳过程是什么。如果我在事件触发后重新创建表,ImageButton 命令事件将不再起作用。

  • 我应该实现一种方法来更新表中的数据而不重新创建它吗?
  • 事件触发后我应该在代码中重新加载页面吗?

  • 解决此问题的首选方法是什么?

    最佳答案

    页面事件,例如 InitLoad将始终在引发回发的事件处理程序之前触发。这是 Page lifecycle 的基础(对于 Peter Bromberg 的视觉表示,see here)。大多数刚接触 ASP.NET 的开发人员在理解和适当处理这种“困境”方面存在重大问题。

    理想的方法是:

    一种。您的 Page_Init应该调用一个过程(我们称之为 BindData() 以进行说明)来处理基于数据库数据的表的创建。此方法类似于绑定(bind)到数据库数据并基于该绑定(bind)呈现 UI 元素的绑定(bind)方法。 IOW,您应该从 Page_Init 中删除表创建代码方法并将其放在单独的方法中,以便在需要时可以调用它。

    重要提示:这个BindData()方法还处理将动态创建的 ImageButton 控件的事件处理程序附加到控件。我们称之为ImageButton_Click .这对于控制在后续回发时触发的事件至关重要。

    湾。当您的 ImageButton_Click方法执行,它调用 BindData()方法来重新创建表及其绑定(bind),但使用新的排序规则。

    因此,第一次加载时的执行顺序是:

  • Page_Init
  • BindData()

  • 后续加载(回发)的执行顺序是:
  • Page_Init
  • BindData() - 附加了 ImageButton 的事件处理程序。
  • ImageButton_Click
  • BindData()
  • 关于asp.net - 事件处理后如何更新页面数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/780684/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com