2012-11-19 154 views
1

我遇到了以下一段代码的麻烦。它在我的本地机器上运行得非常好,但是当我将它部署在开发服务器中时,它根本不起作用。我在很多地方搜索了一个解决方案,但没有成功。ClientScript.RegisterStartupScript不能在服务器上工作

我有一个gridview,其中一列是buttonfield。此按钮字段将打开一个弹出窗口,显示所选销售订单的详细信息。

为了显示我用下面的句子弹出:

private void OpenPopup(string name_) 
    { 
     Page.ClientScript.RegisterStartupScript(typeof(home), "Popup", string.Concat("<script type='text/javascript'>OpenPopup('", name_, "');</script>")); 
    } 

的OpenPopup()是一个简单的显示弹出一个JavaScript函数(我测试过它,它工作得很好,所以我不会展会不必要的代码):

当的RegisterStartupScript在我的本地环境中执行它工作正常,并将结果在页面的源代码如下:

<script type='text/javascript'>OpenPopup('items');</script> 

现在,当我发布网站并将其部署到服务器时,它根本不起作用。我已经尝试使用Scriptmanager来工作,但结果相同;它在本地工作,但不在服务器中。

添加的脚本根本没有被写入。

我真的很喜欢任何形式的帮助。我已经搜索了很多方法,但对我来说没有解决方案...

非常感谢。

/编辑:我不使用页面中的updatepanel。

+0

您可以验证的OpenPopup()服务器方式曾经叫什么名字? –

+0

此外,这是您点击按钮时发生的唯一事情(例如,如果我们使按钮打开弹出窗口而不会发布到服务器,这会更好吗?) –

回答

0

您是否尝试过使用.RegisterClientScriptBlock?这是我总是用来在代码隐藏中调用JS的。

你可以试试类似下面的代码吗?

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    Boolean dne = false; 
    StringBuilder errorMessage = new StringBuilder(); 
    String scriptName = ""; 



    if (AdminAccess.DoesUserExist(txtUsername.Text)) 
    { 
     errorMessage.Append("alert('The selected username " + txtUsername.Text + " is already in use. Please choose another. ');"); 
     scriptName = "duplicateUsername"; 
     if (!ClientScript.IsClientScriptBlockRegistered(scriptName)) 
     { 
      ScriptManager.RegisterClientScriptBlock(this, this.GetType(), scriptName, errorMessage.ToString(), true); 
     } 
     dne = true; 
    } 

}

+0

你好。这不起作用,因为RegisterClientScriptBlock在创建其他控件之前使JavaScript调用执行。 RegisterStartupScript将调用放在代码的底部,这是正确的,在我的本地环境中工作正常。我真的不知道为什么会发生这种情况。我认为这与服务器本地环境相比,在服务器上应该有所不同。 – Javier

+0

您在事件处理程序中创建了哪些其他控件? – tuckerjt07

+0

我正在使用在此调用之前隐藏并填充的gridview。在gridview填充后,我试图调用这个函数来弹出这个gridview。 – Javier

相关问题