代码中有一些区域阻止标题过滤器的出现和运行。我已经在下面解释了小提琴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;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)