如何从javascript调用服务器端功能?

时间:2009-06-18 12:34:37

标签: c# asp.net javascript .net-3.5

我有一个javascript函数,我试图调用服务器端函数WebSchedule.Client.RadGrid1_SelectedIndexChanged。这是代码:

<script type="text/javascript">

     function RowSelected(sender, args) 
     {
         var dataKeyValue = args.getDataKeyValue("Order_No");
         document.getElementById("txtOrderno").value = dataKeyValue;
         WebSchedule.Client.RadGrid1_SelectedIndexChanged(sender, args);
     }
 </script>

但是,我收到错误“WebSchedule未定义”。我做错了什么?

3 个答案:

答案 0 :(得分:4)

查看所谓的page methods

不过,这应该是服务器端方法还是客户端?

function RowSelected(sender, args) { 
    var dataKeyValue = args.getDataKeyValue("Order_No");      
    document.getElementById("txtOrderno").value = dataKeyValue;
    WebSchedule.Client.RadGrid1_SelectedIndexChanged(sender, args); 
} 

所以 - 在我看来这是一个javascript函数。

据我所知,RadScriptManager继承自System.Web.UI.ScriptManager。这就是EnablePageMethods道具所做的事情: “获取或设置一个值,该值指示是否可以从客户端脚本调用ASP.NET页面中的公共静态页面方法。”

以粗体显示的单词意味着 - 您将不会在该服务器端方法中看到缺少视图状态的任何控件。

因此 - 考虑使用更新面板控件(我不知道它如何与telerik控件一起使用)或确保您的服务器端方法完全无状态(通过javascript函数传递所需的数据)。

无论如何 - 在我看来,你应该更仔细地研究页面方法的本质。

答案 1 :(得分:1)

客户端= / =服务器

了解异步Javascript和XML。

答案 2 :(得分:1)

您的服务器端页面方法必须具有WebMethod属性并声明为public static。

然后使用javascript,可以使用以下语法调用它们:PageMethods.MethodName()