#jquery #datetime #sorting #jqgrid
#jquery #datetime #сортировка #jqgrid
Вопрос:
Когда я устанавливаю [ sorttype: "datetime", datefmt: "d/m/Y H:i:s" ]
сетку jQuery, я получаю сообщение об ошибке при сортировке столбца datetime.
Сообщение таково: undefined
. Но это происходит только в IE 8/9, в Firefox это работает нормально.
У меня есть несколько таблиц, созданных динамически. Одна созданная таблица выглядит следующим образом:
<table id="files_1">
<thead>
<tr>
<th>Sequencial</th>
<th>File</th>
<th>Datetime</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>File 1</td>
<td>07/04/2011 09:28:00</td>
<td>100</td>
</tr>
<tr>
<td>2</td>
<td>File 2</td>
<td>07/03/2011 09:28:00</td>
<td>101</td>
</tr>
</tbody>
</table>
После этого появляется функция javascript, подобная этой:
$(document).ready(function() {
tableToGrid("#files_1", {
height: 'auto',
width: '100%',
rowNum: '2',
rowTotal: '2',
hoverrows: true,
colNames: ['', 'File', 'Datetime', 'Size (bytes)'],
colModel: [
{name:'Sequencial', index:'Sequencial', width: '30', stype:'text', align: 'center', sorttype:'number'},
{name:'File', index:'File', width: '370', stype:'text', align: 'left'},
{name:'Datetime', index:'Datetime', width: '', stype:'text', align: 'center', datefmt: "d/m/Y H:i:s", sorttype: 'date'},
{name:'Size', index:'Size', width: '', stype:'text', align: 'center', sorttype:'number'},
]
});
});
Сетка создана и работает нормально.
Выполняется сортировка всех столбцов, кроме столбца datetime.
Когда я пытаюсь отсортировать этот столбец (в IE 8 или IE 9), он возвращает красивое короткое сообщение (не определено) из сетки, а не ошибку javascript. Это похоже на то, как если бы сетка не смогла получить некоторый элемент / атрибут во время сортировки.
Комментарии:
1. какие данные вы используете для сетки? Как вы заполняете сетку? Используете ли вы
formatter:'date'
? Полный пример кода, который можно использовать для воспроизведения проблемы, является лучшим.2. вы должны изменить свой исходный вопрос и добавить любую необходимую информацию вместо того, чтобы писать ответы на его собственный вопрос. Это значительно упрощает чтение вашего вопроса. Кроме того, вам следует написать комментарий, начинающийся с @Oleg, если вы хотите, чтобы кто-нибудь его прочитал (подробности смотрите здесь )
Ответ №1:
Попробуйте использовать полную информацию о формате даты:
{
name:'Datetime',
index:'Datetime',
width: '',
formatter:'date',
formatoptions: {newformat:'m/d/Y'},
datefmt: 'd-M-Y',
sorttype: 'date'
}
Ответ №2:
Есть еще одна простая ошибка: запятая перед ] в конце colModel
определения. Комбинация },]
является синтаксической ошибкой.
Демонстрация включает в себя код, который вы опубликовали, и я не вижу ошибок, по крайней мере, в IE9.
Вы можете дополнительно проверить, что в вашей версии jquery.jqGrid.min.js в комплект поставки которого вы загрузили следующие модули: grid.base.js , grid.common.js , grid.tbltogrid.js. Для этого вы можете просто открыть jquery.jqGrid.min.js откройте текстовый редактор и выполните поиск в комментарии в начале файла после слов «Модули:» для grid.base.js , grid.common.js , grid.tbltogrid.js.
Комментарии:
1. Другая деталь заключается в том, что я вызывал это с помощью ajax. При успешном завершении был добавлен ответ в div с помощью $(«#divId»).html(response). Я обнаружил, что IE не очень хорошо работает с этим способом добавления содержимого. Затем я изменил команду на $(«#divId»).append(ответ), и она прошла, работает нормально в Firefox, таким образом, как и в IE. Важно: включенные файлы (js и css jqgrid) находились в файле, вызванном ajax. Я изменил ее на заголовок файла, который вызывает ajax. Теперь все работает…