【问题标题】:jqGrid error on sorting datetime column排序日期时间列的jqGrid错误
【发布时间】:2011-04-06 20:16:13
【问题描述】:

当我将 [ 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'},
        ]
    });
});

网格已创建并且工作正常。

它对除日期时间列之外的所有列进行排序。

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

【问题讨论】:

  • 您将哪些数据用于网格?你如何填充网格?你用formatter:'date'吗?可以用来复现问题的完整代码示例是最好的。
  • 你应该修改你的原始问题并附加任何需要的信息,而不是在他自己的问题上写答案。它使您的问题的阅读变得更加容易。此外,如果您希望有人阅读,您应该以@Oleg 开头写评论(有关详细信息,请参阅here

标签: jquery datetime sorting jqgrid


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    The demo 包含您发布的代码,我至少在 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。

    【讨论】:

    • 另一个细节是我通过 ajax 调用它。成功时通过 $("#divId").html(response) 添加对 div 的响应。我发现 IE 不能很好地使用这种添加内容的方式。然后我将命令更改为 $("#divId").append(response) 并通过它在 Firefox 中正常工作,例如在 IE 中。重要提示:包含的文件(jqgrid 的 js 和 css)在 ajax 调用的文件中。我将其更改为调用 ajax 的文件的标题。现在,一切正常...
    猜你喜欢
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 2015-07-18
    • 2021-03-01
    • 2019-12-14
    • 2014-09-02
    • 1970-01-01
    相关资源
    最近更新 更多