SlickGrid-需要不敏感的案例过滤器

时间:2012-05-29 19:41:03

标签: javascript case-sensitive slickgrid case-insensitive

是否有办法将过滤器从敏感案例更改为不敏感?

谢谢。

3 个答案:

答案 0 :(得分:2)

以下是使用DataView过滤器的工作示例的相关部分。请注意,首次定义值时, searchString 变量将转换为小写,然后将其与 myFilter 函数中的小写字符串进行比较。

function myFilter(item, args) {
    if (args.searchString != "" && item["FirstName"].toLowerCase().indexOf(args.searchString) == -1 && item["LastName"].toLowerCase().indexOf(args.searchString) == -1) {
        return false;
    }
    return true;
}

....

$("#txtSearch").keyup(function (e) {
    Slick.GlobalEditorLock.cancelCurrentEdit();
    // clear on Esc
    if (e.which == 27) {
        this.value = "";
    }
    searchString = this.value.toLowerCase();
    updateFilter();
});

function updateFilter() {
    dataView.setFilterArgs({
        searchString: searchString
    });
    dataView.refresh();
}

// initialize the model after all the events have been hooked up
dataView.beginUpdate();
dataView.setItems(data);
dataView.setFilterArgs({
    searchString: searchString
});
dataView.setFilter(myFilter);
dataView.endUpdate();

答案 1 :(得分:1)

猜测您正在谈论DataView过滤器,过滤器功能的实现完全取决于您。请注意SlickGrid示例中使用的过滤器函数 - 使用dataView.setFilter(your_function_here)将该函数设置为过滤器。因此,您可以根据需要实现过滤功能,并将其设置为dataView

答案 2 :(得分:0)

  function filter(item) {
    // String Should Match Each Other
    /* for (var columnId in columnFilters) {
      if (columnId !== undefined && columnFilters[columnId] !== "") {
        var c = grid.getColumns()[grid.getColumnIndex(columnId)];
        if (item[c.field] != columnFilters[columnId]) {
          return false;
        }
      }
    } */

    for (var columnId in columnFilters) {
        if (columnId !== undefined && columnFilters[columnId] !== "") {
            var c = grid.getColumns()[grid.getColumnIndex(columnId)];
// This Case Sensitive
//if (!(item[c.field] && (""+item[c.field]).indexOf(columnFilters[columnId]) !== -1)) {
            if (!(item[c.field] && (""+item[c.field].toLowerCase()).indexOf(columnFilters[columnId].toLowerCase()) !== -1)) { 
// Case in-Sensitive
                return false;
            }
        }
    }
    return true;
  }