让我首先说,我对jQuery或任何JavaScript编程都很陌生,所以请原谅任何与noob相关的错误。
我正在使用SlickGrid为我的公司创建一个web应用程序,该应用程序将根据用户的角色加载不同的数据集,因此我的字段将由动态sql查询定义,而不是硬编码。
我想将SlickGrid分支上的Andrew Child过滤器应用于master分支的最新版本。此示例中显示了筛选器:https://github.com/andrewchilds/SlickGrid/blob/master/examples/example15-fork-feature-demo.html
我创建了一个控件(使用寻呼机控件作为模板)来添加筛选标头元素。它看起来很棒!现在我只需要让它发挥作用。以下内容https://github.com/mleibman/SlickGrid/blob/master/examples/example4-model.html看起来我需要修改这个函数来遍历列,返回过滤器类型和列名,而不是硬编码过滤器类型和类名。
function myFilter(item, args) {
if (item["percentComplete"] < args.percentCompleteThreshold) {
return false;
}
if (args.searchString != "" && item["title"].indexOf(args.searchString) == -1) {
return false;
}
return true;
}
我的问题是:
- 我是否已经接近正轨
- 如果是1,如何修改myFilter()和dataView.comileFilter()
谢谢你的帮助!
欢迎来到SO!
过滤函数(在本例中为myFilter
)将应用于DataView中的每一项(行)。如果列不是硬编码的,则可以使用grid.getColumns()
获取列列表。举个例子,看看我的过滤函数:
function filter(item) {
for (var columnId in columnFilters) {
if (columnId !== undefined && columnFilters[columnId] !== "") {
var c = grid.getColumns()[grid.getColumnIndex(columnId)];
if(c.field == "...") {
// return filtered items
}
else {
// return false
}
}
}
return true;
}
这里的columnFilters
是一个数组,包含我要过滤的值。
如果你有任何问题,请告诉我。