2011-11-09 9 views
6

Estoy usando jqGrid, en la función editar/agregar Quiero tener una lista desplegable en uno de estos campos.jqGrid setSeleccione la función con la consulta parametrizada

Esto funciona si uso la función setSelect como esto:

$grid->setSelect("title", "SELECT DISTINCT name,name as TestingName FROM template", true, true, false, array(""=>"All")); 

¿Cómo puedo pasar parámetros a mi consulta? Probé siguientes:

1- "SELECT DISTINCT name,name as TestingName FROM template where tempid = ?"

2- "SELECT DISTINCT name,name as TestingName FROM template where tempid = $rowid"

3- "SELECT DISTINCT name,name as TestingName FROM template where tempid = ". $rowid

ninguna de las anteriores trabajó mientras que tener:

if(isset ($_REQUEST["tempid"])) 
    $rowid = jqGridUtils::Strip($_REQUEST["tempid"]); 
else 
    $rowid = ""; 
+0

no encuentro ninguna documentación sobre el método '-> setSelect' de la clase jqgrid php en http://www.trirand.com/blog/phpjqgrid/docs/jqGrid/jqGrid.html#sec-method- resumen ¿puede proporcionar más información? –

+0

http://www.trirand.net/documentation/php/index.htm -> section tutorials-> drop downs – Grace

Respuesta

4

Si en lo correcto entender su pregunta usted usa editoptions con dataUrl. Desea tener la URL que tiene el parámetro adicional tempid cuyo valor debe ser el rowid de la fila seleccionada actualmente.

Según la sintaxis de su pregunta, supongo que utiliza algún producto jqGrid comercial para PHP de trirand.net. En este caso, debe usar la etiqueta [jqgrid-php]. jqGrid es un producto de código abierto puro de JavaScript. Entonces respondo cómo se puede agregar el parámetro dataUrl en JavaScript.

jqGrid tiene ajaxSelectOptions opción que se puede utilizar para modificar los jQuery.ajax opciones de la llamada que utilizan dataUrl. Puede hacerlo siguiendo

var myGrid = $("#list"); 

myGrid.jqGrid({ 
    // all your current parameters of jqGrid and then the following 
    ajaxSelectOptions: { 
     data: { 
      tempid: function() { 
       return myGrid.jqGrid('getGridParam', 'selrow'); 
      } 
     } 
    } 
}); 

Si el parámetro data de jQuery.ajax contiene un método en lugar de una propiedad, el método será llamado cada momento de la llamada jQuery.ajax correspondiente. Usé el mismo truco en the answer.

+0

el tempid es la clave principal de la grilla maestra, lo estoy enviando a la grilla de detalles, y puedo obtener el valor del elemento en la cuadrícula de detalles. mi problema es que no sé cómo usar la función setSelect para pasar la consulta con el parámetro – Grace

+0

@Grace: no veo ninguna diferencia. Puede simplemente 'myMasterGrid.jqGrid ('getGridParam', 'selrow');' en la cuadrícula de detalles. Alternativamente, puede guardar la identificación de la fila seleccionada actual de la grilla maestra en una variable (como 'masterRowId'). Puedes hacer esto dentro del evento 'onSelectRow' de la grilla maestra. Luego puede usar 'tempid: function() {return masterRowId; } ' – Oleg

+0

@Grace: Probablemente use' ajaxSelectOptions' en el lugar incorrecto. Modifiqué un poco mi respuesta para mostrar más claro que debes agregar 'ajaxSelectOptions' a otras opciones de jqGrid que uses. – Oleg

Cuestiones relacionadas