0

首先让我说我对 jQuery 或任何 JavaScript 编程都很陌生,所以请原谅任何与 noob 相关的错误。

我正在使用 SlickGrid 为我的公司创建一个 Web 应用程序,它将根据用户的角色加载不同的数据集,因此我的字段将由动态 sql 查询定义,而不是硬编码。

我想将 SlickGrid 分支上的 Andrew Child 过滤器应用于 master 分支的最新版本。过滤器显示在此示例中:https ://github.com/andrewchilds/SlickGrid/blob/master/examples/example15-fork-feature-demo.html

我创建了一个控件(使用 pager 控件作为模板)来添加过滤标题元素。看起来不错!现在我只需要让它发挥作用。在下面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. 我什至接近正确的轨道吗?
  2. 如果是 1,如何修改 myFilter() 和 dataView.compileFilter()?

谢谢你的帮助!

4

1 回答 1

0

欢迎来到 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是一个包含我要过滤的值的数组。

如果您有任何问题,请告诉我。

于 2012-08-24T19:57:47.983 回答