【问题标题】:two events fired simultaneously in ASP.NET在 ASP.NET 中同时触发两个事件
【发布时间】:2011-03-22 10:11:20
【问题描述】:

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

如果用户在更新面板中更改我的网格中的内容时不小心点击了页面上的另一个按钮,例如,用户在我的网格视图控件中输入了一个值,而没有使用制表符,则用户单击保存按钮。

从逻辑上讲,我认为触发器应该首先触发点击事件(事件 A),然后触发保存按钮事件(事件 B)。但是,我一直没有看到事件 A 正确触发,而事件 B 一直触发......

对此有什么想法吗?

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

谢谢。

【问题讨论】:

  • 您能否通过禁用按钮 B 来阻止它,直到网格刷新?
  • @Brian,可能不是,因为页面中还有其他组件,并且网格视图本身不是必填字段..因此用户可以单击按钮 b 而没有任何网格视图。
  • 嗯,我的意思是一旦你点击按钮,就阻止事件 B 的按钮?例如,这通常用于意外单击按钮两次等问题。
  • 抱歉,有点迷路了……具体的问题是什么?有示例代码吗?

标签: asp.net ajax triggers


【解决方案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();";
        }
    }

【讨论】:

    猜你喜欢
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    相关资源
    最近更新 更多