0

我有以下代码在开发机器上运行良好。但是,当我将它部署到 IIS 时,the .click()不会触发。

  1. I have drop down box, when a status is selected, I add the following code to open up a RadWindow

    if (ddlStatusID.SelectedValue.ToString() == "2")
         btnUpdateStatus.Attributes.Add("onclick", "return OpenWindow2('" + 
         ResolveUrl("~/Request/AddBillableTime.aspx?  RequestId=" + RequestId.ToString()) +  
    "','650','320');");
    else
       btnUpdateStatus.Attributes.Add("onclick", "");
    
  2. 在弹出页面中,当用户单击我添加的按钮时,请执行以下操作

    ClientScript.RegisterStartupScript(this.GetType(), "CloseWindow", 
     "ClosePopup();", true);
    

这是 ClosePopup javascript。

function ClosePopup() {
    //debugger;
    alert('This is before closing the window');
    var oWindow = GetRadWindow();
    oWindow.argument = null;
    oWindow.close();
    alert('This is after closing the window');
    oWindow.BrowserWindow.ButtonClick();
    }
  1. 在主窗口中,我有以下 javascript,它在上述 javascript 的最后一行调用。

    function ButtonClick() {
    //debugger;
    alert('This is before button click!');
    var btnUpdateStatus =   
    document.getElementById('ctl00_ContentPlaceHolder1_btnUpdateStatus');
    alert('This is getting the button!');
    btnUpdateStatus.setAttribute("onclick", "");
    alert('This is setting the button!');
    btnUpdateStatus.click();
    alert('This is after clicking the button!');
    

    }

我已经使用警报来检查 javascript 函数的执行程度。

当我使用 Visual Studio 运行它以及在本地 IIS 服务器中托管它时,整个功能都运行良好。但是,当我将它部署到服务器时,click() 事件停止触发。

请让我知道代码中是否有任何问题。

4

2 回答 2

2

由于我被分配了一项新任务,因此我没有时间研究这个问题。但是一旦我回到相同的任务中,就必须修复它。我从我的一个朋友那里得到了一些帮助来解决这个问题。我不得不稍微改变一下当前的逻辑,并在下面解释了解决方案。

我更改了ButtonClick如下功能以使用该功能创建手动回帖到页面__doPostBack

function ButtonClick() {
__doPostBack('btnUpdatePage', '');
return;
}

我从Page_Load页面的方法处理了回帖。

if (Request["__EVENTTARGET"] == "btnUpdatePage")
{
     UpdateStatus();
}

如果回发事件目标与__doPostBack方法中分配的事件目标匹配,那么我调用一个方法来更新状态。

这样我就可以避免这个问题。但我不知道为什么没有使用旧ButtonClick函数触发事件。

于 2012-10-17T03:55:26.553 回答
0

如果代码在您的 PC 上运行良好,那么对我来说唯一看起来可疑的是以下 2 行:

1. document.getElementById('ctl00_ContentPlaceHolder1_btnUpdateStatus');

2. btnUpdateStatus.setAttribute("onclick", "");

对于第一行,您应该这样做,而不是:

document.getElementById('<%=btnUpdateStatus.ClientID%>');

对于第二行,您似乎正在将onclick处理程序设置为""基本上不应该做任何事情。

这可能根本不是问题。最好的办法是使用 Firebug 对其进行调试,在被调用的适当 Javascript 函数中放置一个断点。

于 2012-08-16T17:19:53.640 回答