实现jqgrid单元格编辑日期选择器


implement jqgrid cell edit datepicker

我知道使用日期选择器编辑单元格是可能的,因为这里和这里的引用。然而,当我点击单元格时,没有显示日期选择器。下面是所讨论的列的colModel条目。我有日期选择器UI可用。

在其他示例中,dataInit没有被引号包围。它在我的代码中,因为整个colModel是在AJAX请求期间由PHP动态创建的。我将其构建为数组,然后json_encode将其传递回jqGrid。PHP的json_encode创建有效的JSON,所以所有的键都被引用为字符串。为了使jqGrid正常工作,我必须删除引号吗?如果有,怎么做?

日期列的colModel条目:

{
 "editable":true,
 "name":"date",
 "index":"date",
 "sorttype":"date",
 "editrules":{"date":true},
 "editoptions":{
   "dataInit":"function(elem){
       setTimeout(function(){
          $(elem).datepicker();
       },100);
    }"
 }
}
下面是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',
    });
   }
  });
});

另外,我使用jqGrid 4.0.0

我有同样的问题与PHP的json_encode传递一个函数,这是不可能的,但如果你使用Zend框架,你可以使用Zend_Json_Expr('function…')使用一个函数,然后用Zend_Json::encode($var)编码。

这仍然不能解决问题,因为如果稍后通过AJAX插入事件,则不会触发事件。

你可以看看Pike_Grid,看看它是如何完成的。