2010-07-26 4 views
0

J'essaie d'implémenter la liste déroulante en cascade de la boîte à outils. J'ai besoin d'obtenir le compte dans une liste déroulante de sous-catégorie, si c'est zéro puis j'éteins la visibilité de la sous-catégorie.Appel de Javascript après que la méthode Web ait été déclenchée

Si j'utilise l'événement javascript OnChange alors mon script se déclenche avant la méthode web, j'ai donc besoin de savoir comment déclencher mon script APRÈS que la méthode web ait été déclenchée.

Ma page de démonstration: http://bit.ly/92RYvq

Voici mon code et l'ordre que je besoin de tirer.

[WebMethod] 
public CascadingDropDownNameValue[] GetSubCats1(string knownCategoryValues, string category) 
{ 
    StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues); 
    int CategoryID; 
    if (!kv.ContainsKey("Category") || !Int32.TryParse(kv["Category"], out CategoryID)) 
    { 
     return null; 
    } 
    dsSubCat1TableAdapters.Categories_Sub1TableAdapter SubCats1Adapter = new dsSubCat1TableAdapters.Categories_Sub1TableAdapter(); 
    dsSubCat1.Categories_Sub1DataTable SubCats1 = SubCats1Adapter.GetSubCats1(CategoryID); 

    List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>(); 
    foreach (DataRow dr in SubCats1) 
    { 
     values.Add(new CascadingDropDownNameValue((string)dr["SubCategory1"], dr["SubCatID1"].ToString())); 
    } 
    return values.ToArray(); 
} 
longueur getSubCatCount fonction () {$ get ("ddlSubCats1"). Style.display = $ get ("ddlSubCats1").> 1? "block": "aucun"; }

Répondre

1

En règle générale, lorsque vous appelez votre fonction de méthode Web via javascript, vous pouvez lui fournir deux fonctions de rappel. L'un est renvoyé s'il y a une erreur et l'autre se déclenche une fois l'appel de méthode Web terminé. Le rappel nécessite deux arguments, le résultat et un contexte. Par exemple, si votre fonction s'appelait myWebMethodFunction et que votre espace de noms était contenu dans my.fully.qualified.namespace, il pourrait ressembler à ceci.

my.fully.qualified.namespace.myWebMethodFunction(param1, param2, ... , paramN, onErrorCallback, onCompleteCallback, context); 

Une fois cette fonction terminée, il appellera la onCompleteCallback passer le résultat de votre fonction webmethod et tout ce que vous avez passé un contexte.
Cela fait un moment que j'ai appelé une fonction de méthode Web, donc j'ai peut-être inversé l'ordre du rappel.

Pour une raison que je ne peux pas commenter les choses non plus, mais je peux ajouter à ceci.
Je pense peut-être à quelque chose de différent, mais vous devez appeler quelque chose via javascript pour déclencher votre webmethod, correct? Quoi que vous utilisiez pour appeler le webmethod via javascript, vous devriez avoir un mécanisme pour ajouter un callback qui sera déclenché une fois votre appel webmethod terminé et retourné.

+0

Melt vous a répondu via le système de réponse en raison de sa réputation, tout comme un fyi. – Brian

0

Utilisez jQuery.ajax() il vous permet de spécifier une fonction de succès et une fonction d'échec qui se déclenche après le retour de la méthode Web.

+0

Je suppose que vous voulez dire jQuery, avez-vous un exemple concret de cela? Ceci est le code que je veux exécuter après la méthode web ci-dessus: function getSubCatCount() {$ get ("ddlSubCats1"). Style.display = $ get ("ddlSubCats1"). Longueur> 1? "block": "aucun"; } Cordialement Melt – Melt

Questions connexes