如何在javascript中调用委托?

本文关键字:调用 javascript | 更新日期: 2023-09-27 18:02:31

我正在写一个javascript

function ValueChanges() 
  {
    Parent = document.getElementById('<%= grvMultiChoiceAnswerList.ClientID %>');
    var items = Parent.getElementsByTagName('textarea');
    var chkboxControl = Parent.getElementsByTagName('checkbox');
    for (i = 0; i < items.length; i++) {
        var hdnTextControl, hdnExplanation;
        hdnTextControl = (items[i].id).replace("txtText", "hdnText");
        hdnExplanation = (items[i].id).replace("txtExplanation", "hdnExplanation");
        if (items[i].id.split("_")[5] == "txtText") {
            if (items[i].value != document.getElementById(hdnTextControl).value) {
                var ssave = window.confirm('Your changes are not saved. Do you want to save your changes before you exit.')
                if (ssave == true) {
                    document.getElementById('<%=btnUpdate.ClientID%>').click(); // I WANT TO REPLACE THIS LIKE SO MY DELEGATE GETS FIRE
                    return false;
                }
                else
                    return true;
            }
        }
    }

我有一个委托

  grvMultiChoiceAnswerList.RowUpdating += delegate(object obj, GridViewUpdateEventArgs args)
{
            SaveFields();
            if (ReloadContent != null)
                ReloadContent(null, EventArgs.Empty);
        };

现在我想在我的java脚本中调用这个委托,并希望替换document.getElementById('<%=btnUpdate.ClientID%>').click();当if(ssave==ture)条件为真

如何在javascript中调用委托?

为了从javascript访问服务器上的"methods",您需要使用javascript进行回发,如:

__doPostBack('MyBtn','');

对于服务器来说,它的作用与

相同
document.getElementById('<%=btnUpdate.ClientID%>').click(); 

,但对于客户端,它将跳过与点击按钮链接的任何javascript。

要访问服务器端,您需要从javascript中模拟事件的触发,以便asp.net页面可以识别它并依附于它。添加网格视图的update列并查看生成的javascript,它将为您提供线索,让您知道在dopostback中触发什么。之后,您可能需要保留列,但可以使用css隐藏它。