2009-06-18 9 views
2

J'ai une fonction javascript à partir de laquelle j'essaie d'appeler la fonction côté serveur WebSchedule.Client.RadGrid1_SelectedIndexChanged. C'est le code:Comment appeler une fonction côté serveur depuis javascript?

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

Cependant, j'obtiens une erreur "WebSchedule is undefined". Qu'est-ce que je fais mal?

+0

Et vous êtes sûr que vous appelez ce pagemethod de avec une page ASPX et non un usercontrol ascx? –

+0

oui je suis sûr que c'est une page ASPX – kevinw

Répondre

4

Vérifiez ce que l'on appelle page methods. Btw, est-ce supposé être côté serveur ou côté client?

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

Donc, il me semble que c'est une fonction javascript. Pour autant que je sache, RadScriptManager hérite de System.Web.UI.ScriptManager. Voici ce que fait EnablePageMethods prop: "Obtient ou définit une valeur qui indique si les méthodes de page statiques publiques dans une page ASP.NET peuvent être appelées à partir du script client." Ces mots en gras signifient: vous ne verrez aucun contrôle dans cette méthode côté serveur en raison de l'absence de viewstate. Par conséquent, pensez à utiliser le contrôle Update Panel (je n'ai aucune idée de la façon dont il va avec les contrôles telerik) ou assurez-vous que votre méthode côté serveur est complètement apatride (transmettre les données nécessaires via la fonction javascript).

De toute façon - il me semble que vous devriez étudier la nature des méthodes de page plus près.

+0

je l'ai fait et dans le pagemethods sont vrai et il ne fonctionne toujours pas – kevinw

+0

la ligne de fond est la méthode côté serveur – kevinw

+0

@kevinw mis à jour mon poste un peu ... –

1

client =/= Serveur

Rechercher dans Asynchronous Javascript et XML.

1

Vos pagemethods côté serveur doivent avoir l'attribut WebMethod et être déclarés public static.

Ensuite, en utilisant javascript ils peuvent être appelées à l'aide de cette syntaxe: PageMethods.MethodName()

+0

Cela échouera, car les méthodes statiques publiques ne savent rien à propos de viewstate => gridview. –

+0

Vous avez raison sur viewstate mais la question est juste d'appeler une méthode côté serveur - rien à voir avec viewstate. Évidemment, les événements côté serveur ne peuvent pas être directement appelés avec javascript. –

+0

cela semble avoir remercié merci mais je suis maintenant à court d'espace de pile – kevinw

Questions connexes