博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度分析DataTable如何筛选
阅读量:7203 次
发布时间:2019-06-29

本文共 1365 字,大约阅读时间需要 4 分钟。

这项DataTable指SpryMedia专为HTML Table设计的插件页面和发展,官方网站:http://legacy.datatables.net/index。

左右oSettings.aiDisplayMaster, oSettings.aiDisplay与oSettings.aoData

不管是从JSON中获取的行数据,还是从DOM元素中获取的行数据,在表初始化之后。皆存储在oSettings.aoData中。有多少条记录aoData数组就有多长。

而aiDisplayMaster则用于记录aoData中每行数据在依据列排序之后的位置。这个排序过程被安排在_fnSort()方法中。

并非每行数据都须要显示,于是就有aiDisplay则用于保存须要显示的行记录,及其位置。aiDisplay来源于aiDisplayMaster,是aiDisplayMaster排序之后的子集。

在不使用filter的情况下,aiDisplay全然等于aiDisplayMaster。

过滤

所谓过滤事实上是从aiDisplayMaster中,依据aoData的数据和匹配条件。把须要显示的行数据的序号依照aiDisplayMaster中已经排好的顺序保存在aiDisplay数组中。

过滤分全局过滤、基于列过滤和自己定义过滤。

过滤在_fnFilterComplete()方法中运行,运行顺序是:全局过滤、基于列过滤、自己定义过滤。这三个过滤分别相应:_fnFilter(), _fnFilterColumn(), _fnFilterCustom()。

全局过滤

全局过滤又分强制又一次过滤和非强制又一次过滤。所谓强制又一次过滤即全然又一次建立aiDisplay数组。而非强制又一次过滤则是在前aiDisplay的基础上继续过滤。

须要注意的是,假设全局过滤字符串为空,aiDisplay将等于aiDisplayMaster。

使用强制全局过滤的情况包含:

  • 调用fnFilter()方法,不管有没有指定column。
  • 直接调用_fnFilter(oSettings,sInput, 1);
  • 调用_fnSort()方法;
  • 调用_fnFilterComplete()方法,但过滤字符串为空。

使用非强制全局过滤的情况包含:

  • 调用_fnReDraw()方法;
  • 调用_fnInitialize()方法,即初始化的时候;

基于列过滤

全局过滤之后就是列过滤。列过滤是在全局过滤的结果集aiDisplay上再过滤掉一些不须要显示的行数据序号。

列过滤根据来源于列选项mRender中当type==filter时返回的字符串。

列过滤在_fnFilterColumn方法中运行。

自己定义过滤

自己定义过滤是过滤的最后一步,是对列过滤的结果集aiDisplay的进一步过滤,这个过滤使用的方法须要定义在DataTable.ext.afnFiltering数组中。

每一个自己定义过滤方法接受三个參数(从左往右):

  • oSettings;
  • 行数据;
  • 行序号。

多keyword过滤

fnFilter方法中有一个參数是bSmart。但这种说法是true 时刻,keyword间距格将作为分隔符。

版权声明:本文博主原创文章,博客,未经同意不得转载。

你可能感兴趣的文章
两个栈实现队列 两个队列实现栈
查看>>
Doubly linked list
查看>>
javascript对Dom操作中table添加行性能问题
查看>>
Android 自定义title样式
查看>>
Bootstrap<基础一> CSS 概览
查看>>
Linux永久修改系统时间和时区方法
查看>>
HDU1257 最小拦截系统 【贪婪】
查看>>
(年代久远的)常用表情符号
查看>>
Android GUI之Window、WindowManager
查看>>
Android 微信分享信息
查看>>
ECMAScript 6 Features 中文版
查看>>
UVA 11149 - Power of Matrix(矩阵乘法)
查看>>
用yo命令创建项目
查看>>
log4j与commons-logging,slf4j的关系(转)
查看>>
Swift - 使用CGBlendMode改变UIImage颜色
查看>>
VB常用字符串操作函数
查看>>
Python 使用pymongo操作mongodb库
查看>>
jQuery DataTables插件分页允许输入页码跳转
查看>>
虚拟路由冗余协议VRRP
查看>>
sql:除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询...
查看>>