2009-07-30 10 views
14

Ich habe alles funktioniert von der Anleitung, ersetze es mit meinen Daten, aber es ist eine fest codierte Situation. Zum Beispiel im Tutorial, das ist, was ich arbeite, ich habe:Versuch, jqgrid für jquery zu verstehen. Wie ändere ich die URL für meinen AJAX-Anruf?

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' 
    }); 
}); 

Aber die URL ist hart codierte Daten zu ziehen. Das Tutorial hat:

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' 
    }); 
}); 

Offensichtlich werden die Daten in meinem Abfragezeichenfolgeflag ändern und ich will nicht immer die gleiche URL: http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc

Und das Tutorial mit example.php Bedürfnissen Abfragezeichenfolgeflag Variablen, so dass es kann die richtigen Daten bekommen, aber sie zeigen nie den Teil, den ich finden kann. Wie ändere ich die Querystring? Wie sende ich Elemente dynmisch? Auch wegen des hard url der Pager-Tasten Sachen wie diese senden:

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

Wie kann ich nur eine URL wie/test/die richtigen Variablen? Wie kann ich die Querystring ändern?

Vielen Dank für jede Hilfe. Ich hoffe, es ist nicht zu offensichtlich. Ich fand setGridParam({url:newvalue}), aber ich habe nicht verstanden, wie man es benutzt.

Hier ist die documentation. Das Tutorial ist im ersten Teil, oben.

EDIT: Danke für die unten. Ich versuche zu sehen, wie sie das SetGridParam in ihrem Tutorial mit example.php verwenden. Sie haben einfach example.php und ich kann nicht sehen, wie sie die querystring-Variablen dort von der html-Seite zur example.php-Seite bekommen haben. setGridParam ist vielleicht der richtige Weg, um dies zu erreichen, aber es ist kein Platz in dem Beispiel, so dass ich nicht herausfinden kann, wie sie die anfänglichen Querystring-Variablen übergeben haben.

Ich weiß, dass ich das tun kann:

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()"/> 

und dass das Gitter neu zu laden (Ich habe es getestet, es funktioniert), aber wie haben sie senden über Elemente im Tutorial in erster Linie? Was ist, wenn ich nicht möchte, dass eine Schaltfläche neu geladen wird, sondern nur Variablen übergibt, damit sie anfänglich geladen wird?

+1

Haben Sie jemals eine Antwort auf diese finden? Ich habe auch so gut ausgesehen und würde gerne während eines grid-reload-Aufrufs einige zusätzliche Abfragezeichenfolgen an die URL übergeben. –

+0

Ich frage mich, ob dies vor jQuery Aliasing mit dem $ war. – johnny

Antwort

46

Nachdem Sie Ihr Raster erstellt haben, können Sie eine URL erstellen und dann angeben, dass das Raster neu geladen werden soll.

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

Wie haben sie die Variablen im Tutorial gesendet? Weißt du, wie der Pager Querystring erstellt wird? – johnny

+0

mit den Methoden .getGridParam ("Seite") usw. – redsquare

+1

Aber wo ist das im Tutorial? Ich glaube Ihnen. Ich sehe nur nicht, wie sie es in ihrem Tutorial implementiert haben. – johnny

2

Sie können dies versuchen:

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

Angenommen, Sie ein jqGrid js Code in einer js Funktion geschrieben haben. Also in diesem Verfahren gibt Ihre URL dynamisch in einer Variablen urlGetLst In jqGrid Code müssen wir einige Attribute angeben:

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

Mit dieser Option wird es jedes Mal einen Aufruf an gibt angegebene URL und refresh das jqgrid mit neuen Daten.

Und vor jqGrid Ladefunktion mit url ruf/execute unter Code

$("#jqgridtab").GridUnload(); 
Verwandte Themen