2012-08-10 82 views
0

訪問代碼隱藏參數化的功能有沒有一種方法,使代碼從背後的JavaScript警告框CAL。我在網格視圖上使用按鈕。點擊它..它應該提醒一個確認框......並且稍後使用cal來代碼功能。這是cal後面的代碼的一部分。如何通過JavaScript

protected void GridView1_RowDataBound(object source, GridViewRowEventArgs e) 
{ 
    ...... 
    btnAlertStatus.Attributes.Add("onclick", "javascript:if(confirm('Are you sure you want to send an email " + ID+ " ?') == true) EmailTest(ID); "); 
    ...... 
} 

protected void EmailTest(int ID) 
{ 
} 

這樣,我不能夠訪問SEND_EMAIL ....有沒有更好的方式來CAL此功能在rowboundevent

+0

可以btnAlertStatus click事件處理程序分配給EmailTest功能,然後javacript但OnClientClick這個代替的onclick – SMK 2012-08-10 07:11:46

回答

1

JavaScript運行在客戶端

ASP.NET (CodeBehind)運行在服務器

不能執行該生活在服務器上,直接從客戶端的方法。你通常做的是你做新的請求,告訴服務器運行該方法,然後將結果返回給客戶端。

在你的情況,當聽警告框關閉,然後執行postback到服務器。你也可以像@Kek建議的那樣使用ajax來做到這一點,看看jQuery或ASP.NET Ajax。

+1

回傳,或Ajax調用添加屬性... – Kek 2012-08-10 07:05:34

0

你可以,但你需要在代碼中使用AJAX或jQuery的

背後創建這種測試方法

[System.Web.Services.WebMethod] 
public static string SayHi() 
{ 
    return "Hi"; 
} 

然後在你的aspx頁面右邊的表格標籤下方添加

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

然後還添加此代碼在您的aspx頁面

<script> 
     function GetHi() { 

      PageMethods.SayHi(onComplete); 
     } 

     function onComplete(result) { 
      alert(result); 
     } 

     GetHi(); 
</script> 
+0

很整齊,但服務器之間的區別/客戶得到更加模糊,當你移動到'asp.net mvc'這一切都將是非常混亂的,只是我的2美分。 :) – 2012-08-10 07:09:23

+0

在MVC它很容易做的服務器端調用,至少這將讓他在正確的方向 – JohnnBlade 2012-08-10 07:12:53

+0

是的,我同意,只是想補充我的想法。 :) – 2012-08-10 07:14:47