2011-10-07 55 views
0

我有我的asp.net页面上有两个单选按钮之前,用AutoPostBack = True
当我点击任一者,他们每设置一个标志SaveData=False在asp.net,Page_Load中发生的历史单选按钮OnCheckedChanged事件

然而,当我点击它们时,page_load事件首先发生,所以page_load事件保存数据,然后radiobutton_OnCheckedChanged事件被触发。

如何在page_load事件之前触发OnCheckedChanged事件?

+0

它不可能实现。但对于标志设置,您可以使用viewstate或session在onCheckedChanged事件中设置值,并在需要的地方使用它。 –

回答

1

因为这是正常的页面生命周期,所以在radiobutton_OnCheckedChanged之前不能触发OnCheckedChanged

如果Page.IsPostBack为true或不存在,则可以检入Page_Load,然后不保存(或保存)数据。

+0

好吧,有一个应该保存数据的按钮,所以如果不是ispostback理论不会工作。 – Troy

+1

@Troy,它会工作;这是否是最好的方式是一个单独的讨论。底线是ASP.NET不是WinForms。 Page_Load事件将始终在单选按钮上的OnCheckChanged之前触发。您可以通过检查IsPostBack和radioButton.Checked == true来防止保存数据。 – Icarus

0

在触发事件之前,您无法始终加载该页面。这与控件创建,查看状态管理,控制状态等做

要在Page_Load做的是一样的东西:

if(!this.IsPostBack) 
{ 
    // Do the stuff you want on the initial page load 
} 

任何你希望发生单击单选按钮时,将其放在if {}块内。 IsPostBack表示该页面正在处理回发事件,这是您单击某个单选按钮时发生的情况。

1

特洛伊 - 你必须在客户端(javascript/jquery)处理这件事。 Your AutoPostBack = True将导致表单执行回调,调用页面加载。它关于页面生命周期和服务器端事件如何工作的全部内容。

0

can't change事件处理程序执行的order/sequence。但是,您可以将page_load内的代码移动到另一个event handler

相关问题