当我将[ sorttype: "datetime", datefmt: "d/m/Y H:i:s" ]
设置为jQuery网格时,我在排序日期时间列时得到一个消息错误。
消息为: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列。
当我尝试排序这个列(在ie8或ie9)它返回一个漂亮的短消息(未定义),从网格,而不是一个javascript错误。这就好像网格在排序时无法获得某些元素/属性。
尝试使用完整的日期格式信息:
{
name:'Datetime',
index:'Datetime',
width: '',
formatter:'date',
formatoptions: {newformat:'m/d/Y'},
datefmt: 'd-M-Y',
sorttype: 'date'
}
还有一个简单的错误:在colModel
定义的末尾,[前面有逗号。组合},]
语法错误
演示包括你发布的代码,我发现至少在IE9中没有错误。
你可以另外验证一下,在你下载的jquery.jqGrid.min.js版本中包含了以下模块:grid.base.js, grid.common.js, grid.tbltogrid.js。要做到这一点,你可以在文本编辑器中打开jquery.jqGrid.min.js,并在文件开头的"Modules:"后面的注释中搜索grid.base.js, grid.common.js, grid.tbltogrid.js.