1

我正在将 java 脚本注册到我的 Asp.net 代码隐藏文件,它工作正常。现在,我在同一页面上有一些更新面板,问题是每当任何更新面板发生任何变化时,都会自动调用此脚本。有什么办法可以阻止这种情况发生。我无法从我的页面中删除更新面板,这个脚本也是应用程序的一个非常重要的部分。在这种情况下,我只是在单击保存按钮或调用更新例程时调用警报(具有设置超时功能的 rad 警报),而我在更新面板中几乎没有其他按钮以及任何注册到更新的按钮单击面板时,不情愿地调用了以下脚本。任何人的帮助将不胜感激。

以下是我的 Page.ClientScript

                string radalertscript = "<script language='javascript'> Sys.Application.add_load(function(sender, e) {var oWnd = radalert('dialogMessage', 400, 140, 'Saved');window.setTimeout(function () { oWnd.Close(); }, 3000);});</script>";
                Page.ClientScript.RegisterStartupScript(this.GetType(), "radalert", radalertscript);
4

2 回答 2

2

您可以将空字符串分配给相同radalert的键以删除脚本。

if(some_condition)
    Page.ClientScript.RegisterStartupScript(this.GetType(), "radalert", "");

编辑:根据评论,您可以在不使用的情况下使其变得简单RegisterStartupScript

在后面的代码中

btnSave.Attributes.Add("", "saveButtonFunction();");

在 Javascript 中

<script language='javascript'>

   Sys.Application.add_load(function(sender, e) {
           if(btnSaveClicked){
              var oWnd = radalert('dialogMessage', 400,140, 'Saved');
              window.setTimeout(function () { oWnd.Close(); }, 3000);
              btnSaveClicked = false;
           }
    });

    btnSaveClicked = false;
    function saveButtonFunction(){
       btnSaveClicked = true;
    };    

</script>
于 2013-01-15T12:00:53.823 回答
1

非常感谢您的回答阿迪尔。我已经采用了相同的方法,几乎​​没有什么不同。我已从文件后面的代码中取出 JavaScript,并已注册 Sys.Application.add_load 事件,如下所示

    Sys.Application.add_load(DisplayRadAlertHandler);
    function DisplayRadAlertHandler() {
        var getMessage = document.getElementById('<%=radAlertDialogHidden.ClientID%>').value;
        if (getMessage != "") {
            document.getElementById('<%=radAlertDialogHidden.ClientID%>').value = "";
            var oWnd = radalert(getMessage, 400, 140, 'Saved');
            window.setTimeout(function () { oWnd.Close(); }, 3000);
        }
    }

在这里,我将我的警报消息设置在来自文件后面代码的隐藏输入字段中,在上面的事件处理程序中,我只是检查消息是否存在,而不是重置隐藏字段并显示消息。你的方法也是正确的,我已经标记了你的答案,但是因为我从多个位置(保存按钮、更新例程等)显示我的消息,所以通过为隐藏的输入字段分配值而不是在上面的事件处理程序中重置看起来更合适。再次感谢您的帮助。

于 2013-01-16T10:24:18.967 回答