2011-04-11 105 views
0

我写了一个javscript,它创建了一个包含某些信息的弹出窗口。在C中调用JavaScript弹出窗口#

function Showduplicate() { 
      isDuplicate = true; 
      var modal = document.getElementById('duplicate'); 
      modal.style.display = ''; 
      modal.style.position = 'fixed'; 
      modal.style.zIndex = '100'; 
      modal.style.left = '30%'; 
      modal.style.top = '40%'; 

      var screen = document.getElementById('modalScreen'); 
      screen.style.display = ''; 
      return false; 


    } 

模态是一个div元素。重复也是一个包含某些复选框等的div元素。现在我在代码隐藏中检查一个查询,并相应地调用这个javascript函数。我试图使用Page.RegisterClientScriptBlock方法,但不成功。所以你们可以帮助我在代码隐藏中调用javascript函数。

+0

在一般来说,你可以从JS调用C#函数,但反之亦然 - 至少不是没有很大的努力。你到底想用这个代码来做什么?它看起来像一个输入验证帮手。 – sukru 2011-04-11 00:20:36

+0

我实际上处理网格中的重复,我需要做出是否创建记录的用户的决定 – Sayamima 2011-04-11 00:23:14

+0

这是一个回发后,或者它是一个JS动作的响应? – sukru 2011-04-11 00:41:44

回答

0

我认为你的情况,你应该使用Page.RegisterStartupScript()。有关RegisterStartupScript()RegisterClientScriptBlock()之间区别的更多信息,请参阅this pos t。

+0

Page.RegisterStartupScript(“myscript”,“”); – Sayamima 2011-04-11 00:24:02

+0

我这样做了,但仍然无法调用弹出式窗口 – Sayamima 2011-04-11 00:24:43

0

我假设你正在使用Asp.Net WebForms和Asp.Net Ajax。 (同样的技术也可以应用于其他场景)。

比方说,你有这样一个按钮:

<tr> 
    <td><input id="grid_1">Value</input></td> 
    <td><a href="javascript:addItem(1)">Add</a></td> 
</tr> 

然后你就可以控制与下面的JS代码的弹出:

function OnAddSuccess(result) { 
    // Update display 
} 

function OnAddError(error) { 
    Showduplicate(); 
} 

function addItem(id) { 
    $get("LoadingLabel").innerHTML = "Loading..."; 
    PageMethods.TryAddItem(id, $get("grid_"+id).innerHTML, OnAddSuccess, OnAddError); 
} 

你不应该忘记:

<asp:ScriptManager ID="ScriptManager" runat="server" EnablePageMethods="true" />