2010-04-28 5 views
1

En créant un contrôle usercontrol côté client, un fichier javascript est attatched. Ce contrôle a un bouton et lorsque vous cliquez sur une fenêtre contextuelle, cette fenêtre affiche une liste des entités de mon domaine. Mes entités sont récupérées à l'aide d'un appel à un service Web. J'essaie d'obtenir ce popup usercontrol pour fonctionner sur toutes mes entités, donc j'ai besoin d'appeler n'importe quel webservice nécessaire (un par entité par exemple) avec le même appel $ .ajax().

J'ai des champs cachés pour l'url de service web dans mon usercontrol que vous spécifiez dans le balisage via une propriété. Jusqu'ici tout va bien. Le problème survient lorsque j'ai besoin de paramètres supplémentaires pour le service web (autre que pagesize et pageindex). Supposons par exemple qu'un webservice prenne un paramètre supplémentaire "Date".

Au moment où j'ai mes paramètres définis comme ceci:

var params = JSON.stringify({ 
     pageSize: _this.pageSize, 
     pageIndex: _this.pageIndex    
    }); 

puis j'appelle webservice comme ceci:

$.ajax({ 
    webserviceUrl, 
    params, 
    function(result) { 
      //some logic 
    }); 
}); 

Ce que je veux faire est d'être en mesure d'ajouter mes paramètres supplémentaires (Date) à "Param" en cas de besoin, la spécification de ces paramètres se fera via les propriétés de la commande usercontrol. Donc, la ligne du bas, j'ai un ensemble de paramètres par défaut et je veux ajouter dynamiquement des paramètres supplémentaires facultatifs.

Comment est-ce possible?

Merci d'avance.

Répondre

1

Je sais que ce ne sera pas rapide, mais quelque chose comme

var params; 
function buildJsonParams(defaultParam1, defaultParam2, optionalParam1, ...) 
{ 
    string pString = "params = JSON.stringify({ pageSize: _this.pageSize, pageIndex: _this.pageIndex"; 
    if (optionalParam1 != undefined) 
    { 
    pString += ",yourOptionParam: optionalParam1"; 
    } 
    pString += "});"; 
    eval(pString); 
} 

ou si vous ne savez pas à l'avance ce que les paramètres facultatifs sont vous pouvez utiliser des tableaux parallèles, l'un étant la variable et l'autre le nom du paramètre et les transmettre à une fonction similaire à buildJSONParams pour faire le même type de chose que les 2 tableaux qui sont passés.

+0

Merci, cela a beaucoup aidé! – Andreas

0

quelque chose comme cela devrait fonctionner

var params = getDefaultParams(); 
// some condition to determine if extra needed? 
params.specialDate = getSpecialDateParam(); 
// could also be written as params['specialDate'] = getSpecialDateParam(); 

$.ajax({ 
    webserviceUrl, 
    JSON.stringify(params), 
    function(result) { 
      //some logic 
    }); 
}); 


// **************************** 
function getDefaultParams() { 
    return { 
     pageSize: _this.pageSize, 
     pageIndex: _this.pageIndex   
    }; 
} 
+0

Merci, cela fonctionnerait si je connaissais tous les params, merci quand même! – Andreas

Questions connexes