2011-07-08 102 views
5

我知道使用datepicker進行單元編輯是可能的,因爲參考文獻herehere。然而,當我點擊單元格時,沒有日期選擇器出現。以下是相關列的colModel條目。我有datepicker用戶界面可用。implements jqgrid cell edit 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

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

+0

這會出現成爲上述問題的副本(屬性名稱已更改,但問題相同:您無法通過JSON傳遞JavaScript ***代碼***,這是針對數據的。您必須在某處處理某些處理獲取字符串數據返回成代碼的路徑。 – TML

回答

0

我在使用PHP的json_encode傳遞函數時有同樣的問題,這是不可能的,但如果您使用的是Zend Framework,則可以使用Zend_Json_Expr('function ...')來使用函數,然後使用Zend_Js進行編碼對::編碼($ VAR)。

仍然這不會解決問題,如果您稍後通過AJAX插入它,事件將不會被解僱。

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