2009-06-18 64 views
2

我有一個javascript函數,我試圖調用serverside函數WebSchedule.Client.RadGrid1_SelectedIndexChanged。這是代碼:如何從JavaScript調用serverside函數?

<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 is undefined」。我究竟做錯了什麼?

+0

,你肯定你是從與aspx頁面,而不是ASCX用戶控件調用此PageMethod的? – 2009-06-18 12:53:55

+0

yes確定它的一個ASPX頁面 – kevinw 2009-06-18 12:58:22

回答

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 prop的功能: 「獲取或設置一個值,該值指示是否可以從客戶端腳本調用ASP.NET頁面中的公共靜態頁面方法。」

這些詞用黑體表示 - 你不會看到任何控制在那個服務器端的方法缺乏viewstate的原因。因此 - 考慮使用更新面板控制(我沒有想法它如何與telerik控件一起使用),或者確保您的serverside方法完全無狀態(通過javascript函數傳遞所需數據)。

無論如何 - 在我看來,你應該調查頁面方法的性質更接近。

+0

我已經完成了這一點,並在 pagemethods是真實的,它仍然無法正常工作 – kevinw 2009-06-18 12:41:27

1

客戶端=/=服務器

調查異步JavaScript和XML。

1

您的服務器端pagemethods必須具有WebMethod屬性並聲明爲公共靜態。

然後使用JavaScript,他們可以使用這個語法調用:PageMethods.MethodName()