2011-04-11 104 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" />