从 1.9 升级至数据表 1.10

与所有数据表的 1.x 版本一样,向后兼容是升级的关键目标。我们希望数据表能直接进入您的当前网站,以便您在最少麻烦的情况下获得新功能的好处。始终可以从下载页面下载数据表的最新版本。

虽然大多数升级都应该非常顺利,但在从 1.9 或更早版本将数据表升级到 1.10 时,必须考虑一些要点(请参阅以前的更新备注了解早期版本)。

创建数据表/API 访问

现在可以通过以下方式创建数据表

  • $(...).dataTable(),或
  • $(...).DataTable()

两者的区别在于,第一个将返回一个 jQuery 对象,而第二个则返回一个数据表API 实例

旧的 API(fn 前缀方法)在数据表 1.10 中仍然可用,以便向后兼容,并像以前一样附加到 jQuery 对象,但新的 API 已得到显着改进,我鼓励您尝试一下!

分页

数据表 1.10 显着升级了数据表的分页控件(请参见pagingType),因此删除了旧的内置two_button分页形式。

如果您正在使用two_button分页控件,并希望继续这样做(而不是使用 1.10 中的simple选项,它提供相同的按钮,但按钮的类名称更一致),可以使用集成文件。在加载数据表后但在初始化表格之前,只需将此文件包含在文档中,two_button分页将与 1.9 中完全相同地恢复(包括类名称等)。

服务器端处理

为了与数据表中的选项和 API 使用驼峰命名法保持一致,服务器端处理参数也已更新为更现代(请参阅文档以获取完整信息)。此更改是可选的,并且仅在条件允许的情况下启用,以确保完全向后兼容

  • $.fn.dataTable.ext.legacy.ajax可用于强制使用哪种模式。设置为false以使用现代方案,或设置为true以使用 1.9 方案。默认情况下,它是null以实现自动检测。
  • 数据表将根据是否ajaxsAjaxSource用于初始化表格,自动决定使用哪种形式的参数
    • ajax - 将使用现代方案
    • sAjaxSource - 将使用旧方案。

因此,如果您只是更新数据表并且不更改任何参数,则无需更改服务器端脚本。

API 插件

如果您正在使用任何 API 插件,则可能需要为 1.10 更新它们,因为一些内部函数已经更改 - 其中一些可能已由插件使用。

本网站上可用的插件已全部更新,可与 DataTables 1.10 正确操作,如果您使用这些插件,只需放到位即可。

已删除的功能

上述改进可通过删除 DataTables 1.9 的三项功能来实现,它们在 1.9 中已被弃用,并在 1.10 中计划被删除。

fnRender

旧的 fnRender 选项提供了一种在其创建时操作单元格的方法。但是,它提供了一个令人困惑的选项列表作为其参数,并在 DataTables 内部需要一种引起性能问题的特定结构。删除 fnRender 已大大提升了 DataTables 在大型数据集中的性能,并使其能够将对象实例提供给 DataTables 作为数据源对象(例如 Knockout 可观察对象)

取代 fnRender 的是 columns.rendercolumns.createdCell 选项,它们提供了更多灵活性以及更一致的界面。

bScrollInfinite

DataTables 1.9 通过 bScrollInfinite 选项显示无限滚动网格的内置功能已被删除,原因是它在 API 中引起的差异。删除还显著简化了内部代码。

取代 bScrollInfinite 的是推荐使用 DataTables 的Scroller 扩展。

基于 Cookie 的状态保存

基于 Cookie 的状态保存已在 DataTables 1.10 中替换为基于 localStorage 的状态保存。大小限制为 4KiB 的 Cookie 非常有限,并且会产生性能损失,因为它们是每个 HTTP 请求的一部分。localStorage 更快更灵活,在 DataTables 1.10 中用作状态信息的默认存储。

localStorage 在 IE6/7 中不可用。因此,这些浏览器不支持 DataTables 的内置状态保存,在这种情况下,状态保存将静默失败。如果您希望使用 Cookie,可以使用 stateLoadCallbackstateSaveCallback 参数提供一个合适的函数。

相关文档

此文档包含有关升级到 1.10 的一般信息,以下文档中提供了有关各个主题的更详细信息

其他问题?

如果您在升级过程中碰巧遇到任何其他问题,请在 论坛 中告知我,以便根据需要解决问题或充分记录问题。