Je cherche la meilleure façon de permettre aux utilisateurs de choisir d'afficher TOUS les enregistrements dans un jqGrid. Je sais qu'une valeur -1 passée pour le paramètre rows indique ALL, mais je veux que le mot "ALL" ne soit pas -1 dans l'élément rowList select, ie. rowList: [15, 50, 100, 'ALL'].Meilleure façon de changer jqGrid rowNum de ALL à -1 avant de passer à un service Web
Je passe la requête de grille à un service Web qui accepte un int pour "rows", et j'essaie de trouver comment et quand je devrais changer la valeur sélectionnée par l'utilisateur de "ALL" à -1 avant que est envoyé au service Web.
Voici le code maillé nettoyé. J'ai essayé quelques différents blocs de code avant mon $ .ajax dans la fonction de type de données. Mais la plupart des tentatives semblaient juste que je devais le faire de la manière la plus alambiquée que je pourrais. Par exemple,
datatype: function(postdata) {
if ($("#gridTableAssets").jqGrid('getGridParam', 'rowNum') == 'ALL') {
$("#gridTableAssets").appendPostData({ "rows": -1, "page": 1 });
}
$.ajax({...
Mais faire cela semblait faire la « page » réelle GridParam à Nulled sur les actions de grille suivantes, me forçant poignée dans d'autres endroits. Il semble juste que c'est quelque chose qui serait souvent fait là-bas et avoir une façon propre de le faire.
code réseau Nettoyé:
$("#gridTableAssets").jqGrid({
datatype: function(postdata) {
$.ajax({
url: "/Service/Repository.asmx/GetAssets",
data: JSON.stringify(postdata),
type: 'POST',
contentType: "application/json; charset=utf-8",
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert('error');
},
success: function(msg) {
var assetsGrid = $("#gridTableAssets")[0];
assetsGrid.addJSONData(JSON.parse(msg));
...
}
});
},
...
pager: $('#pagerAssets'),
rowNum: 15,
rowList: [15, 50, 100, 'ALL'],
...
onPaging: function(index, colindex, sortorder) {
SessionKeepAlive();
}
});
Et voici le service Web
[WebMethod]
public string GetAssetsOfAssetStructure(bool _search, int rows, int page,
string sidx, string sord, string filters)
Oleg, merci pour les idées. J'ai été capable d'incorporer certaines choses dans ma fonction de type de données pour que cela fonctionne pour moi. J'aimerais quitter la fonction de type de données, mais continuer à courir dans le même problème quand j'essaye. Je vais essayer d'expliquer mon problème dans un commentaire ou deux, peut-être qu'il y a une solution évidente. Tout d'abord, j'essaie tout avec 3.6.4 et 3.7.1. Mon problème consiste à remplir la grille avec les données renvoyées lorsque vous n'utilisez pas la fonction de type de données. (Suite dans le commentaire suivant ...) – Billyhole
Le service Web renvoie les données dans les deux sens mais ne remplit la grille que si dans ma fonction de type de données, j'ajoute une fonction de filtre de données pour supprimer la propriété d. var msg = JSON.parse (données); if (msg.hasOwnProperty ('d')) renvoie le message msg.d; - J'ai essayé de jouer avec mon tableau jsonReader, mais je n'arrivais toujours pas à l'obtenir.Mon format de données json revenant est {"d": "{" Total ": nnn," Page ": nnn," Enregistrements ": nnn," Lignes ": [{" STANDARDASSETID ": nnnn," field1 ":" xxxxx "," field2 ":" yyyy "}]," UserData ": zzzz}"} ---- Et mon jsonReader est {root: "Rows", page: "Page", total: "Total", records : "Records", repeatitems: false, userdata: "UserData", id: "Id"} – Billyhole
Il semble que vous fassiez quelque chose de mal dans votre service Web. Pourriez-vous mieux ouvrir une nouvelle question et publier un code de votre WebMethod à l'intérieur. Je vais changer le code de sorte que les données principales ne seront pas sérialisées deux fois. – Oleg