Essayer de comprendre jqgrid pour jquery. Comment changer l'URL de mon appel AJAX?

StackOverflow https://stackoverflow.com/questions/1209620

  •  06-07-2019
  •  | 
  •  

Question

Tout ce travail depuis le tutoriel, le remplace par mes données, mais il s’agit d’une situation codée en dur. Par exemple, dans le tutoriel, qui est ce que je travaille, j'ai:

jQuery(document).ready(function(){ 
  jQuery("#list").jqGrid({
    url:'http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc',
    datatype: 'xml',
    mtype: 'GET',
    colNames:['ProductID','title', 'description','price','tax','notes'],
    colModel :[ 
      {name:'invid', index:'invid', width:55}, 
      {name:'invdate', index:'invdate', width:90}, 
      {name:'amount', index:'amount', width:80, align:'right'}, 
      {name:'tax', index:'tax', width:80, align:'right'}, 
      {name:'total', index:'total', width:80, align:'right'}, 
      {name:'note', index:'note', width:150, sortable:false} ],
    pager: jQuery('#pager'),
    rowNum:10,
    rowList:[10,20,30],
    sortname: 'title',
    sortorder: "desc",
    viewrecords: true,
    imgpath: 'http://127.0.0.1/products/public/themes/basic/images',
    caption: 'Product List'
  }); 
}); 

Mais l'URL est difficile à extraire des données. Le tutoriel a:

jQuery(document).ready(function(){ 
  jQuery("#list").jqGrid({
    url:'example.php',
    datatype: 'xml',
    mtype: 'GET',
    colNames:['Inv No','Date', 'Amount','Tax','Total','Notes'],
    colModel :[ 
      {name:'invid', index:'invid', width:55}, 
      {name:'invdate', index:'invdate', width:90}, 
      {name:'amount', index:'amount', width:80, align:'right'}, 
      {name:'tax', index:'tax', width:80, align:'right'}, 
      {name:'total', index:'total', width:80, align:'right'}, 
      {name:'note', index:'note', width:150, sortable:false} ],
    pager: jQuery('#pager'),
    rowNum:10,
    rowList:[10,20,30],
    sortname: 'id',
    sortorder: "desc",
    viewrecords: true,
    imgpath: 'themes/basic/images',
    caption: 'My first grid'
  }); 
}); 

Évidemment, les données de ma chaîne de requête vont changer et je ne veux pas toujours la même URL de: http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc

Et le tutoriel avec example.php a besoin de variables de chaîne de requête pour pouvoir obtenir les bonnes données, mais elles ne montrent jamais la partie que je peux trouver. Alors, comment puis-je changer la chaîne de requête? Comment envoyer des éléments de manière dynamique? De plus, les boutons du pager envoient des choses comme ça à cause de l'URL du code fixe:

http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc?page=2&rows=10&sidx=productname&sord=desc&nd=12488888121293& ; _search = false

Comment puis-je avoir juste une URL comme / test / les bonnes variables? Comment puis-je changer la chaîne de requête?

Merci pour toute aide. J'espère que ce n'est pas trop évident. J'ai trouvé setGridParam ({url: newvalue}) mais je ne comprenais pas comment l'utiliser. .

Voici la documentation . Le didacticiel se trouve dans la première partie, en haut.

EDIT: Merci pour le ci-dessous. J'essaie de voir comment ils utilisent le setGridParam dans leur tutoriel avec example.php. Ils ont simplement example.php et je ne vois pas comment ils y ont obtenu les variables de chaîne de requête de la page HTML à la page example.php. setGridParam est peut-être le bon moyen d’accomplir cela, mais ce n’est nulle part dans l’exemple. Je ne peux donc pas comprendre comment ils ont passé les variables de chaîne de requête initiales.

Je sais que je peux le faire:

    function gridSearch()
    {
        $("#list").setGridParam(
            {

                  url:"http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc",
                page:1
            }
            ).trigger("reloadGrid");//Reload grid trigger
        return false
    }

<input id="sData" class="EditButton" type="submit" value="Search" onClick="return gridSearch()"/>

et que cela rechargera la grille (je l’ai testée; ça marche), mais comment ont-ils envoyé des éléments du tutoriel en premier lieu? Que se passe-t-il si je ne souhaite pas qu'un bouton soit rechargé mais que je transmette simplement des variables pour qu'il soit initialement chargé?

Était-ce utile?

La solution

Après avoir créé votre grille, vous pouvez créer une URL, puis spécifier cette option et déclencher le rechargement de la grille.

jQuery("#list").jqGrid().setGridParam({url : 'newUrl'}).trigger("reloadGrid")

Autres conseils

Vous pouvez essayer ceci:

jQuery("#list")
    .jqGrid()
    .setGridParam({
        data:'xml',
        url : 'newUrl'
    })
    .trigger("reloadGrid");

Supposons que vous ayez écrit un code jqgrid js dans une fonction js. Donc, dans cette méthode, passez votre URL dynamiquement dans une variable urlGetLst Dans le code jqgrid, nous devons spécifier certains attributs:

url: urlGetLst,//(will be dynamic)
//and
loadonce: false

Cette option permet d'appeler à chaque fois l'URL spécifiée et d'actualiser la jqgrid avec de nouvelles données.

Et avant d'appeler la fonction de chargement jqgrid avec l'URL , appelez / exécutez le code ci-dessous

$("#jqgridtab").GridUnload();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top