2011-03-26 39 views
2

嗨,我想根據查詢顯示或隱藏重複記錄。所以,我需要知道如何從C#代碼隱藏中調用JavaScript函數。在C中調用javascript函數#

<a onclick="Grid1.insertRecord(); return false;" id="a2" href="javascript:">Save</a> 

當我點擊保存我需要證明我所用JavaScript編寫的彈出窗口。

if (!exist)//exists is the query 
     { 
      System.Web.UI.Control my = FindControl("a2"); 
       a2.Attributes.Add("onclick", "retrun HideDuplicate()"); 

該行返回一個錯誤,指出「a2在當前上下文中不存在」。

+0

這是你在找什麼? http://stackoverflow.com/questions/1265887/call-javascript-function-on-hyperlink-click – paparush 2011-03-26 23:16:03

回答

1

爲什麼不使用asp.net LinkButton?它有一個服務器端Click事件,並可從c#代碼隱藏訪問。

+0

我認爲你的意思是OnClientClick事件,這將渲染出一個javascript onclick事件? http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.linkbutton.onclientclick.aspx – rtpHarry 2011-03-26 23:18:44

+0

是的。我在找那個..讓我檢查鏈接 – Sayamima 2011-03-26 23:21:03

+0

,如果你不得不調用類似'Grid1.insertRecord()'的東西,他應該使用OnClick服務器端事件處理程序嗎? – 2011-03-26 23:21:51

1

基本的<a>標籤沒有變成asp.net的控件,除非你添加一個runat =「server」給它。然後它變成了HtmlGenericControl

<a onclick="Grid1.insertRecord(); return false;" id="a2" href="#" runat="server">Save</a> 

這可能會爲你工作 - 它的,如果你在頁面上這些鏈接的多個不明確(如在一排一個GridView的?),或者如果它只是在那裏一次。

而且你已經使用JavaScript的方式並不遵循最佳做法,但多數民衆贊成在另一天的討論:)

+0

我已經連續。然而,runat並沒有解決問題 – Sayamima 2011-03-26 23:16:14

+0

沒有這不會解決你的問題連續。您需要處理'GridView'控件的'RowCreated'事件,然後使用'e.Row.FindControl()' – rtpHarry 2011-03-26 23:22:53

1

MSDN文檔programatic creation of client side callbacks without postbackexample where the code behind is in C#可能會給它應該是怎樣的一般工作一個很好的概述。

在你的情況下,相應的代碼隱藏應該實現接口'ICallbackEventHandler'和它描述的兩種方法。另外,除了執行者/調用者(在你的情況下,一個'保存'方法),你還需要兩個客戶端Javascript函數來準備和處理回調。但是,另外兩個Javascript函數中的一個可以在代碼隱藏中註冊,如示例所示。

+0

謝謝,這對我很有幫助 – 2011-03-27 04:49:21