2011-07-08 11 views
5

Sé que la edición de celda con datepicker es posible debido a las referencias here y here. Sin embargo, cuando hago clic en la celda, no aparece el marcador de fecha. A continuación se muestra la entrada de colModel para la columna en cuestión. Tengo UI datepicker disponible.implementar jqgrid cell edit datepicker

En los otros ejemplos, dataInit no está rodeado de comillas. Está en mi código porque todo el colModel es creado dinámicamente por PHP durante una solicitud de AJAX. Lo construyo como una matriz, luego json_encode para pasarlo a jqGrid. El json_encode de PHP crea un JSON válido, por lo que todas las claves se citan como cadenas. ¿Debo eliminar las comillas para que jqGrid funcione correctamente? ¿Si es así, cómo?

La entrada colModel de una columna de fecha:

{ 
"editable":true, 
"name":"date", 
"index":"date", 
"sorttype":"date", 
"editrules":{"date":true}, 
"editoptions":{ 
    "dataInit":"function(elem){ 
     setTimeout(function(){ 
      $(elem).datepicker(); 
     },100); 
    }" 
} 
} 

Aquí es la estructura de la solicitud Ajax:

$(document).ready(function(){ 
    $.ajax({ 
    type: "GET", 
    datatype: "json", 
    success: function(result){ 
    try{ 
    //alert(result); 
    result = jQuery.parseJSON(result); 
    }catch(err){ 
    alert("error in success json " + err); 
    return; 
    } 
    var colN = result.colNames; 
    var colM = result.colModelList; 
    var colD = result.colDataList; 
    grid.jqGrid({ 
    datatype: 'local', 
    colNames:colN, //column names 
    colModel:colM, //column options 
    data:colD,  //table data 
    editurl: 'clientArray',//changes are not sent to server 
    cellEdit: true, 
    cellsubmit: 'clientArray', 
    }); 
    } 
    }); 
}); 

Además, estoy usando jqGrid 4.0.0

+0

Oleg responde [aquí] (http://stackoverflow.com/questions/5171617/how-to-add-custom-formatter-for-jqgrid-with-dynamic-column-binding/5175127#5175127) – Andrea

+0

Esto aparece ser un duplicado de la pregunta mencionada (el nombre de la propiedad ha cambiado, pero el problema es el mismo: no se puede pasar el código *** de JavaScript a través de JSON, es para datos. Hay que hacer algo de procesamiento en algún lugar a lo largo de ese ruta para volver a convertir los datos string-ified en código. – TML

Respuesta

0

I tuvo el mismo problema al pasar una función con json_encode de PHP, lo cual es imposible, pero si está usando Zend Framework podría usar Zend_Json_Expr ('function ...') para usar una función y luego codificar con Zend_Js on :: encode ($ var).

Aún así, esto no resolverá el problema porque el evento no se activará si lo inserta más tarde a través de AJAX.

Puedes echar un vistazo al Pike_Grid para ver cómo se hace allí.