快速过滤网格

快速过滤网格,第1张

快速过滤网格

代码中有一些区域阻止标题过滤器的出现和运行。我已经在下面解释了小提琴http://jsfiddle.net/rg8n7vc2/来解决了这些问题。请注意,出于测试目的,我注释掉了JSP代码,该代码填充了网格并用随机测试数据代替了它。

过滤功能访问网格

名为carFactoryGrid的网格变量是在闭包中定义的,但是过滤器函数正在尝试在闭包外部访问它。在闭包外部声明变量carFactoryGrid允许过滤器函数访问它(类似于您链接的示例)。另外,您也可以根据需要将过滤器功能移到封盖内。

小提琴中突出显示的修订1的更改是:

//Line 44 - Delcare carFactoryGrid outside closurevar carFactoryGrid;//Line 51 - Amend filter function to use carFactoryGrid variablevar c =  carFactoryGrid.grid.getColumns()[carFactoryGrid.grid.getColumnIndex(columnId)];//Line 102 - Remove declaration from inside closure (remove var)carFactoryGrid = createGrid({
网格选项和初始化

要查看示例中所示的过滤器标题行,必须在初始化SlickGrid时包括相关选项(showHeaderRow和headerRowHeight)。另外,在订阅onHeaderRowCellRendered事件之后,必须手动初始化网格,以确保正确构造标题行。为此,必须将选项explicitInitialization设置为true,并

grid.init();
在订阅事件后手动调用它以初始化网格。

小提琴中突出显示的Fix 2的更改是:

//Line 96 - Initialize gridgrid.grid.init();//Line 117 - Additional options for gridshowHeaderRow: true,headerRowHeight: 34,explicitInitialization: true
筛选笔记

代码中的filter函数匹配整个字符串,并且区分大小写。因此,您必须在过滤器中键入带有正确大小写的完整单词(例如,在“用户名”中输入“
Chris”),以便显示匹配的结果。如果您想在键入时进行匹配,则需要使用.indexOf()修改函数。使用indexOf示例的小提琴的更新版本为http://jsfiddle.net/rg8n7vc2/2/,其更新如下:

//Line 54//Filtering amendments//Check for null valueif (!item[c.field] && columnFilters[columnId]){    return false;}//Convert the value to a string in case it is a date using toString()//If you are just passing strings instead of dates then .toString is not necessary//If you are using dates then ideally you'd call the relevant formatter here to get the correct format//Converts all to upper case then checks for existence of filter value in value using indexOfif (item[c.field].toString().toUpperCase().indexOf(columnFilters[columnId].toUpperCase()) == -1) {    return false;}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5676105.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存