我知道由于引用here和here,可以使用datepicker进行单元格编辑。但是,当我单击单元格时,没有出现日期选择器。下面是相关列的colModel条目。我有datepicker用户界面。
在其他示例中,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
答案 0 :(得分:0)
使用PHP的json_encode传递函数时遇到了同样的问题,这是不可能的,但是如果你使用的是Zend Framework,你可以使用Zend_Json_Expr('function ...')来使用函数,然后使用Zend_Json :: encode进行编码($变种)。
这仍然无法解决问题,因为如果您稍后通过AJAX插入事件将不会触发该事件。
您可以查看Pike_Grid,看看它是如何完成的。