2009-06-18 14 views
2

Ich habe eine JavaScript-Funktion von wo ich versuche, die serverseitige Funktion WebSchedule.Client.RadGrid1_SelectedIndexChanged aufrufen. Dies ist der Code:Wie rufe ich eine serverseitige Funktion von Javascript auf?

<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> 

Allerdings bekomme ich einen Fehler "WebSchedule ist undefined". Was mache ich falsch?

+0

Und Sie sind sicher, dass Sie diese Pagemethod fordern von mit einer aspx Seite und kein ascx Usercontrol? –

+0

Ja, ich bin sicher, es ist eine ASPX-Seite – kevinw

Antwort

4

Auschecken so genannt page methods.

Btw, soll das serverseitige Methode oder Client-Seite sein?

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

Also - scheint mir, das ist eine Javascript-Funktion.

Soweit ich verstehe, erbt RadScriptManager von System.Web.UI.ScriptManager. Dies macht EnablePageMethods prop: "Ruft einen Wert ab, der angibt, ob public static Seitenmethoden in einer ASP.NET-Seite vom Clientskript aus aufgerufen werden können, oder legt diesen fest."

Diese Wörter in Fettschrift bedeutet - Sie sehen keine Kontrolle in dieser serverseitigen Methode Ursache des fehlenden Viewstate.

Deshalb - in Betracht ziehen, Update Panel-Steuerelement (ich habe keine Ideen, wie es zusammen mit Telerik-Steuerelemente geht) oder stellen Sie sicher, dass Ihre serverseitige Methode völlig zustandslos ist (erforderliche Daten durch JavaScript-Funktion übergeben).

Wie auch immer - scheint mir, dass Sie die Natur der Seitenmethoden genauer untersuchen sollten.

+0

Ich habe das getan und in Seitenmethoden sind wahr und es funktioniert immer noch nicht – kevinw

+0

das Endergebnis ist die serverseitige Methode – kevinw

+0

@kevinw mein Beitrag ein wenig aktualisiert ... –

1

Client =/= Server

Blick in Asynchronous Javascript and XML.

1

Ihre serverseitigen Seitenmethoden müssen das WebMethod-Attribut aufweisen und als statisch public deklariert sein.

Dann mit Hilfe von Javascript sie können mit dieser Syntax aufgerufen werden: PageMethods.MethodName()

+0

Dies wird fehlschlagen, weil öffentliche statische Methoden nichts über viewstate => gridview wissen. –

+0

Sie haben Recht mit Viewstate, aber die Frage ist nur über eine serverseitige Methode aufrufen - nichts mit Viewstate zu tun. Offensichtlich können serverseitige Ereignisse nicht direkt mit Javascript aufgerufen werden. –

+0

das scheint zu haben, danke aber ich bin jetzt nicht mehr im stack space – kevinw

Verwandte Themen