Joa*_*son 3 asp.net page-lifecycle event-handling
在Page_Init上,我创建了一个基于几个数据库表的动态创建控件的表.其中一个控件是ImageButton,用于将列表项向上移动.此事件处理程序执行的操作是更新受影响项目的数据库中的SortOrder列.
现在的问题是,由于控件是在Page_Init事件中创建的,因此稍后在触发ImageButton命令事件时更新SortOrder.使用正确的SortOrder更新表的最佳步骤是什么.如果在事件触发后重新创建表,则ImageButton命令事件不再起作用.
您解决此问题的首选方法是什么?
页面事件,例如Init和Load将始终在引发回发的事件处理程序之前触发.这是页面生命周期的基础(有关Peter Bromberg的可视化表示,请参见此处).大多数ASP.NET新手都有一个重要的问题是理解和妥善处理这个"窘境".
这样做的理想方法是:
一个.您Page_Init应该调用一个过程(让我们称之为BindData()插图)来处理基于数据库数据创建表的过程.此方法类似于绑定到数据库数据并基于该绑定呈现UI元素的绑定方法.IOW,您应该从Page_Init方法中删除表创建代码并将其放在一个单独的方法中,以便在需要时可以调用它.
重要说明:此BindData()方法还处理将动态创建的ImageButton控件的eventhandler附加到控件.我们称之为ImageButton_Click.这对于在后续回发时触发事件的控制至关重要.
湾 当您的ImageButton_Click方法执行时,它会调用BindData()方法来重新创建表,并使用新的排序顺序重新绑定表.
因此,第一次加载的执行顺序是:
Page_InitBindData()后续加载(回发时)的执行顺序是:
Page_InitBindData() - 附加了ImageButton的Eventhandler.ImageButton_ClickBindData()| 归档时间: |
|
| 查看次数: |
4666 次 |
| 最近记录: |