在ASP.NET中同时触发两个事件

时间:2011-03-21 20:02:21

标签: asp.net ajax triggers

我的ASP.NET网络表单中有一个更新面板,其中包含一个触发器,当更新我的更新面板中的内容时,它会触发单击事件(这是一个带字段的网格视图)。当用户进行更改并进行一些计算然后使用该信息更新另一个更新面板时触发的事件。当用户在表单上选中并在点击页面上的任何按钮之前以有序的方式填写表单时,这一切都很好用。

如果用户在更新面板中更改网格中的内容时意外点击了页面上的其他按钮,例如,用户在网格视图控件中输入值,而没有标签,则用户单击保存按钮。

逻辑上,我认为触发器应首先触发click事件(事件A),然后触发保存按钮事件(事件B)。但是,我始终没有看到事件A在事件B一直着火时正确起火......

对此有何看法?

有没有办法确保事件A总是在事件B之前被触发? 如果事件A在没有页面的情况下更新另一个更新面板,那么在更新完成后事件B会激活吗?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试在发布更新之前阻止表单发布2次。这是一个例子

var prm = Sys.WebForms.PageRequestManager.getInstance();    
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
var fAlloToSubmit = true;

function AllowFormToRun()
{
if(!fAlloToSubmit)
    alert("Please wait for the page to fully re-loaded.");

return fAlloToSubmit;
}

function InitializeRequest(sender, args) {      
   fAlloToSubmit = false;
}

function EndRequest(sender, args) {
   fAlloToSubmit = true;
}

并在代码后面添加onsubmit。

protected void Page_Load(object sender, EventArgs e)
{
        if (string.IsNullOrEmpty(Page.Form.Attributes["onsubmit"]))
        {
            Page.Form.Attributes["onsubmit"] = "return AllowFormToRun();";
        }
    }