Existe-t-il un moyen de définir un filtre par programme dans jQuery jqgrid?

J’ai une page avec un jqgrid dessus avec la rangée de filtres en haut. Je veux avoir un lien sur une autre page qui charge cette page de grid mais avec un filtre défini sur l’une des colonnes. Est-il possible de faire à partir d’un lien ou de toute autre solution de contournement que les gens peuvent suggérer?

la façon dont j’ai résolu cela était de passer dans le code suivant:

var myfilter = { groupOp: "AND", rules: [] }; myfilter.rules.push({ field: "DataIssuesYN", op: "eq", data: "Y" }); 

puis dans la configuration de jqGrid, je passe dans postData:

  postData: (myfilter) ? { filters: JSON.ssortingngify(myfilter)} : {}, 

Vous pouvez modifier l’URL appelée par jqGrid, append l’option de filtrage à la chaîne de requête, puis la gérer côté serveur.

 $(link).click(function(){ $(".mygrid").jqGrid('setGridParam',{url:"server.php?useMyFilter=1"}) }); 

solution 1.

de manière programmée en javascript: utilisez le hideCol et donnez-lui le nom de la colonne ou un ensemble de colonnes [noms de colonnes, otherone], l’object jqGrid Étant donné un seul nom de colonne, cette colonne sera masquée avec ce nom. Étant donné un tableau de noms de colonne [“nom1”, “nom2”], il masquera les colonnes portant ces noms, “nom1” et “nom2”, dans l’exemple. Les noms dans colname ou colnames doivent tous être des noms valides du colModel. N’oubliez pas que cela ne changera pas la largeur de la colonne, vous devez donc toujours changer l’exemple colModel: colModel: [{name: ‘photo’, index: ‘photo’, largeur: 605, sortable: false},

… jQuery (“# ​​grid_id”). setGridParam ({…}). hideCol (“photo”). sortinggger (“reloadGrid”); …


solution 2: solution 1:

jQuery (document) .ready (function () {jQuery (“# ​​list”). jqGrid ({url: ‘json.php? myfilter = nom_colonne’, type de données: ‘json’, // ou xml? mtype: ‘GET’ , //

puis dans json.php, vous pouvez retirer la clé de colonne de votre tableau avant de l’imprimer

Vous pouvez essayer d’utiliser la propriété searchoptions de searchoptions dans colModel . Cette fonction a un paramètre elem . Le $(elem) représentera l’élément HTML d’ input que vous pouvez initialiser avec les données dont vous avez besoin.

UPDATED : Essayez d’inclure l’option suivante dans colModel dans la description de la colonne dans laquelle vous souhaitez définir le filtre:

 searchoptions:{ dataInit:function(elem){ $(elem).val("Test"); setTimeout(function(){ $(elem).focus().sortinggger({ type: 'keypress', charCode: 13 }); },500); } } 

dans cet exemple, je mets le texte “Test” comme filtre et simule la touche Entrée. Je suppose que searchOnEnter a la valeur par défaut true . Le transfert de la chaîne de filtrage (comme “Test”) dépend beaucoup de la structure de votre programme, mais j’espère que cela pourra être facilement implémenté.

MISE À JOUR 2 : Il existe probablement différentes façons de comprendre «une page avec une jqgrid dessus avec une ligne de filtre en haut». Je l’ai lu comme un paramètre de filtre dans la barre d’outils de filtre, car la barre d’outils de filtre sera ajoutée en tant que ligne au-dessus des lignes de la grid. Vous pouvez voir ma solution en direct ici. Définition du filtre dans la barre d’outils Filtre