2013-03-13 3 views
0

я следующая модель колонки, определенной -Изменение формата даты для отображения и редактирования в jqGrid

{ 
    name: 'from', 
    index: 'from', 
    formatter: 'date', 
    formatoptions: {srcformat:'ISO8601Long', newformat:'d-M-y H:i'}, 
    editable: true, 
    edittype: 'text', 
    editoptions: { 
     maxlengh: 16, 
     dataInit: function(element) { 
      $(element).datetimepicker({ 
       dateFormat: 'yy-mm-dd', 
       timeFormat: 'hh:mm', 
       separator: ' ', 
       timezone: '000' 
      }); 
     } 
    } 
} 

дата в настоящее время правильно отформатированные как «д-М-у Н: я», когда отображаются в сетке. Когда я пытаюсь отредактировать запись, форма заполняется датой в этом формате, но я бы хотел, чтобы она была «Y-m-d H: i» для редактирования. Если я сделаю изменения с помощью datetimepicker, тогда значение будет обновлено до желаемого формата, но если значение не будет изменено, то опубликовано значение «d-M-y H: i».

Как мне изменить формат даты, прежде чем она будет записана в поле формы? Могу ли я получить доступ к методам форматирования, используемым jqGrid для преобразования? Можно ли использовать опцию unformat для преобразования до заполнения поля формы? Я пробовал различные комбинации, но безрезультатно.

+0

Один из ответов ниже поможет вам в решении проблемы? Если это так, отметьте один как правильный. – Mark

ответ

1

Вы можете создать функцию пользовательского формата, чтобы изменить значение, а затем настраиваемый параметр unformat для передачи этого значения.

formatter: customFormatFunctionName, 

unformat: customUnformatFunctionName, 

Функции:

function customFormatFunctionName(cellval, opts, rowObject, action) { ... 

function customUnformatFunctionName(cellval, opts, rowObject, action) { ... 
0

Я думаю, что вы должны просто использовать dateFormat: 'dd-M-yy' вместо dateFormat: 'yy-mm-dd' и timeFormat: 'HH:mm' вместо timeFormat: 'hh:mm'. Он соответствует формату newformat:'d-M-y H:i', который вы используете.

См the demo:

enter image description here

+0

Благодарим вас за ответ. В конце концов я решил использовать то, что считаю полноценным (недвусмысленным) форматом «yyyy-mm-dd» на всех уровнях. Я надеялся, что «родные» форматирующие элементы будут вести себя так, как большинство пользовательских форматировщиков, путем преобразования форматов для редактирования с помощью unformat. – nnichols

1

Это colModel, который работал на меня. Ключ удалял мое правило редактирования «date: true» и dateformat, а также, что я обычно имею на месте для регулярных столбцов datepicker. Кроме того, получение модели формата в порядке, всегда PITA. У меня есть этот набор к тому, что мои пользователи, как и то, что мой Oracle DB работает лучше ... это был метод проб и ошибок и использовать эту страницу в качестве справки: http://php.net/manual/en/datetime.formats.date.php

{ 
name:"WMBEMSG_BEGIN_DATE", 
align:"center", 
index:"WMBEMSG_BEGIN_DATE", 
datefmt: 'mm/dd/Y HH:MM', 
editable: true, 
edittype: "text", 
editoptions: { dataInit: function(el) { $(el).datetimepicker({ 
    controlType: 'select', 
    dateFormat: "m/d/yy", 
         timeFormat: "HH:mm" 
    }) } 
    }, 
label:"Begin Date", 
width:50, 
sortable: true 
} 

Кроме того, убедитесь, что ваш timepicker Javascript включают в ПОСЛЕ загрузки jQuery и jquery UI.

Смежные вопросы