SlickGrid将Andrew Childs过滤器应用于最新版本的master分支



让我首先说,我对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. 我是否已经接近正轨
  2. 如果是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是一个数组,包含我要过滤的值。

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

最新更新