2009-07-30 17 views
14

Tengo todo funcionando desde el tutorial, reemplazándolo con mis datos, pero es una situación codificada. Por ejemplo, en el tutorial, que es lo que he de trabajar, tengo:Intentando comprender jqgrid para jquery. ¿Cómo cambio la URL de mi llamada AJAX?

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

embargo, la URL es codificada para obtener datos. El tutorial tiene:

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

Obviamente, los datos en mi cadena de consulta cambiarán y no siempre va a querer la misma URL de: http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc

Y, el tutorial con necesidades variables de cadena de consulta ejemplo.php por lo que puede obtener los datos correctos, pero nunca muestran la parte que puedo encontrar. Entonces, ¿cómo cambio la cadena de consulta? ¿Cómo envío ítems dinámicamente? Además, los botones de buscapersonas enviar este tipo de cosas debido a la url hardcode:

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

Como puedo simplemente tener una URL como/test/las variables correctas? ¿Cómo puedo cambiar la cadena de consulta?

Gracias por cualquier ayuda. Espero que no sea demasiado obvio. Encontré setGridParam({url:newvalue}) pero no entendí cómo usarlo.

Aquí está el documentation. El tutorial está en la primera parte, arriba.

EDIT: gracias por el siguiente. Estoy tratando de ver cómo usan el setGridParam en su tutorial con example.php. Simplemente tienen example.php y no puedo ver cómo obtuvieron las variables de la cadena de consulta desde la página html a la página example.php. setGridParam puede ser la manera correcta de lograr esto, pero no está en el ejemplo, así que no puedo entender cómo pasaron las variables iniciales de la cadena de consulta.

sé que puedo hacer esto:

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

y que que se recargue la rejilla (lo probé, ya que funciona), pero ¿qué enviaron más artículos en el tutorial en el primer lugar? ¿Qué pasa si no quiero que se vuelva a cargar un botón, sino que solo paso las variables para que se cargue inicialmente?

+1

¿Alguna vez se encuentra una respuesta a esto? Me han visto bien y me gustaría pasar algunas cadenas de consulta adicionales a la URL durante una llamada de recarga de red. –

+0

Me pregunto si esto fue antes de que jQuery tuviera un alias con $. – johnny

Respuesta

46

Después de haber creado su cuadrícula, puede crear una url y luego especificar esto y activar la cuadrícula para volver a cargar.

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

¿Cómo enviaron las variables en el tutorial? ¿Sabes cómo se crea la búsqueda de buscapersonas? – johnny

+0

mediante el uso de los métodos .getGridParam ("página"), etc. – redsquare

+1

¿Pero dónde está eso en el tutorial? Te creo. Simplemente no veo cómo lo implementaron en su tutorial. – johnny

2

Puede probar esto:

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

Supongamos que usted ha escrito un código jqGrid js en una función js. Así que en ese método de pasar su URL dinámica en una variable urlGetLst En el código jqGrid tenemos que especificar algunos atributos:

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

Con esta opción será cada vez que dar una llamada a especificada url y actualización la jqgrid con datos nuevos.

Y antes de llamar a la función de carga jqGrid con url llamada/ejecutar código a continuación

$("#jqgridtab").GridUnload(); 
Cuestiones relacionadas