2012-08-10 35 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