DataTables Filtering

本文详细介绍了如何使用 DataTables 实现自定义过滤功能,包括基于数据类型的列过滤和自定义行过滤,提供了具体的实现代码示例。

Filtering

Filtering is a core part of DataTables as it allows the end user to very quickly find the data that they are looking for in your table. The standard DataTables distribution presents a global filter for rapid searching of all information in the table ignoring column position and data rendering types. There is also the fnFilter API function available which will allow you to filter on individual columns, but again only on matching the input string against what is show in the table.

There may be times when you which to customise the filtering that DataTables has available, beyond these default methods, and this can be done through the two different filtering plug-in methods that DataTables presents:

  • Type based column filtering - filtering based on the sType of the column.
  • Custom row filters - filtering applied to the data from the whole row.

Type based column filtering

When you assign the sType for a column (or have it automatically detected for you by DataTables or a type detection plug-in), you will typically be using this for custom sorting, but it can also be used to provide custom filtering options. This is done by adding functions to the the object with a parameter name which matches the sType for that target column:

1
$.fn.dataTableExt.ofnSearch

What happens here is that DataTables will construct a search array which is used for the filtering (this is done mainly as an optimisation, but it also useful for separating the searching information from the display, ideal for this kind of application!). As such, the function you add to the ofnSearch object will take a single parameter (the raw data from the data source) and is required to result a string which will be used for the filtering.

The example below shows an sType of title-numeric (used for sorting) which will strip the HTML tags from the input string and return the result. As such the end user's filtering input will not match on the HTML tags (it is worth noting that the built in type of 'html' will perform this action, but 'title-numeric' is used for numeric sorting with HTML tags):

1
2
3
$.fn.dataTableExt.ofnSearch['title-numeric'] = function( sData ) {
   returnsData.replace(/\n/g," ").replace( /<.*?>/g, "");
}

Custom row filters

This method of filtering is some what more comprehensive than the type based filtering in that it allows you the developer complete flexibility over the filtering that DataTables will apply to a row in the table. This is done by extending the DataTables custom filtering array with your function:

1
$.fn.dataTableExt.afnFiltering
Function input parameters:
  1. object - DataTables settings object
  2. array - data for the row in question. Array is indexed by column
  3. int - index of row in aoData
Function return:
  1. boolean
    • true, filter matches - show in results
    • false, filter does not match - remove from the results

The following example shows custom filtering being applied to the fourth column (i.e. the aData[3] index) based on two input values from the end-user, matching the data in a certain range. You can see this example in actions in theAPI examples.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$.fn.dataTableExt.afnFiltering.push(
    function( oSettings, aData, iDataIndex ) {
        variMin = document.getElementById('min').value * 1;
        variMax = document.getElementById('max').value * 1;
        variVersion = aData[3] == "-"? 0 : aData[3]*1;
        if( iMin == ""&& iMax == "")
        {
            returntrue;
        }
        elseif( iMin == ""&& iVersion < iMax )
        {
            returntrue;
        }
        elseif( iMin < iVersion && ""== iMax )
        {
            returntrue;
        }
        elseif( iMin < iVersion && iVersion < iMax )
        {
            returntrue;
        }
        returnfalse;
    }
);

It's worth noting that DataTables will apply it's own input filtering as well as the custom global filtering (i.e. there is a double filter), so if you wish to completely disable DataTables' own global filtering and replace it with your own, just drop the 'f' (filtering) option from sDom.

转载于:https://my.oschina.net/u/1049381/blog/142009

06-22
### 得物技术栈及开发者文档分析 得物作为一家专注于潮流商品的电商平台,其技术栈和开发者文档主要围绕电商平台的核心需求展开。以下是对得物技术栈及相关开发资源的详细解析: #### 1. 技术栈概述 得物的技术栈通常会涵盖前端、后端、移动应用开发以及大数据处理等多个领域。以下是可能涉及的主要技术栈[^3]: - **前端开发**: 前端技术栈可能包括现代框架如 React 或 Vue.js,用于构建高效、响应式的用户界面。此外,还会使用 Webpack 等工具进行模块化打包和优化。 - **后端开发**: 后端技术栈可能采用 Java Spring Boot 或 Node.js,以支持高并发和分布式架构。数据库方面,MySQL 和 Redis 是常见的选择,分别用于关系型数据存储和缓存管理。 - **移动应用开发**: 得物的移动应用开发可能基于原生技术(如 Swift/Kotlin)或跨平台框架(如 Flutter)。这有助于确保移动端应用的性能和用户体验一致性。 - **大数据云计算**: 在大数据处理方面,得物可能会使用 Hadoop 或 Spark 进行数据挖掘和分析。同时,依托云服务提供商(如阿里云或腾讯云),实现弹性扩展和资源优化。 #### 2. 开发者文档分析 类似于引用中提到的 Adobe 开发者文档模板[^2],得物也可能提供一套完整的开发者文档体系,以支持内部团队协作和外部开发者接入。以下是开发者文档可能包含的内容: - **API 文档**: 提供 RESTful API 或 GraphQL 的详细说明,帮助开发者快速集成得物的功能模块,例如商品搜索、订单管理等。 - **SDK 集成指南**: 针对不同平台(如 iOS、Android 或 Web)提供 SDK 下载和集成教程,简化第三方应用的开发流程。 - **技术博客**: 分享得物在技术实践中的经验成果,例如如何优化图片加载速度、提升应用性能等。 - **开源项目**: 得物可能将部分技术成果开源,供社区开发者学习和贡献。这不仅有助于提升品牌形象,还能吸引更多优秀人才加入。 #### 3. 示例代码 以下是一个简单的示例代码,展示如何通过 RESTful API 调用得物的商品搜索功能(假设接口已存在): ```python import requests def search_items(keyword, page=1): url = "https://api.dewu.com/v1/items/search" headers = { "Authorization": "Bearer YOUR_ACCESS_TOKEN", "Content-Type": "application/json" } params = { "keyword": keyword, "page": page, "size": 10 } response = requests.get(url, headers=headers, params=params) if response.status_code == 200: return response.json() else: return {"error": "Failed to fetch data"} # 调用示例 result = search_items("Air Jordan", page=1) print(result) ``` 此代码片段展示了如何通过 Python 请求得物的 API,并获取指定关键词的商品列表。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值