排序datetime列时出现jqGrid错误

时间:2011-04-06 20:16:14

标签: jquery datetime sorting jqgrid

当我将[ 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列以外的所有列进行排序。

当我尝试对此列进行排序时(在IE 8或IE 9中),它会从网格中返回一条漂亮的短消息(未定义),而不是javascript错误。就好像网格在排序时无法获得某些元素/属性。

2 个答案:

答案 0 :(得分:2)

尝试使用完整的日期格式信息:

 {
  name:'Datetime', 
  index:'Datetime', 
  width: '', 
  formatter:'date', 
  formatoptions: {newformat:'m/d/Y'}, 
  datefmt: 'd-M-Y', 
  sorttype: 'date'
 }

答案 1 :(得分:1)

colModel定义结束时还有一个更简单的错误:逗号之前。组合},]是语法错误。

The demo包含您发布的代码,我至少在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的单词“Modules:”之后搜索文件开头的注释。 .tbltogrid.js。