2011-07-08 2 views
5

Я знаю, что редактирование ячейки с помощью datepicker возможно из-за ссылок here и here. Однако, когда я нажимаю на ячейку, не появляется датапикер. Ниже приведена запись colModel для рассматриваемого столбца. У меня есть пользовательский интерфейс datepicker.реализация jqgrid cell edit datepicker

В других примерах dataInit не окружен кавычками. Это в моем коде, потому что весь colModel динамически создается PHP во время запроса AJAX. Я создаю его как массив, а затем 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); 
    }" 
} 
} 

Вот структура запроса АЯКС:

$(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

Олег отвечает [здесь] (http://stackoverflow.com/questions/5171617/how-to-add-custom-formatter-for-jqgrid-with-dynamic-column-binding/5175127#5175127) – Andrea

+0

Это появляется (имя свойства изменилось, но проблема одна и та же: вы не можете передавать код javascript *** *** через JSON, это для данных. Вы должны сделать некоторую обработку где-нибудь рядом с этим путь, чтобы вернуть данные строки в код. – TML

ответ

0

I имел ту же проблему с передачей функции с json_encode PHP, что невозможно, но если вы используете Zend Framework, вы можете использовать Zend_Json_Expr ('function ...') для использования функции, а затем кодировать с помощью Zend_Js на :: закодировать ($ Var).

Все еще это не решит проблему, потому что событие не будет запущено, если вы вставьте его позже через AJAX.

Вы можете взглянуть на Pike_Grid, чтобы посмотреть, как это делается.