如何遍历数据源以创建Querybuilder过滤器

时间:2015-07-21 06:30:27

标签: jquery json

我是jQuery / JSON的新手。我正在使用mistic100的querybuilder,但我不确定如何从数据源加载过滤器。在此示例中,将3个过滤器加载到构建器中。语法方面,我如何从数据源执行此操作?我想我只是不了解如何在数据源中迭代所有过滤器。

    $('#builder-basic').queryBuilder({
      plugins: ['bt-tooltip-errors'],

      filters: [{
        id: 'name',
        label: 'Name',
        type: 'string'
      }, {
        id: 'category',
        label: 'Category',
        type: 'integer',
        input: 'select',
        values: {
          1: 'Books',
          2: 'Movies',
          3: 'Music',
          4: 'Tools',
          5: 'Goodies',
          6: 'Clothes'
        },
        operators: ['equal', 'not_equal', 'in', 'not_in', 'is_null',     'is_not_null']
      }, {
        id: 'in_stock',
        label: 'In stock',
        type: 'integer',
        input: 'radio',
        values: {
          1: 'Yes',
          0: 'No'
        },
        operators: ['equal']
      }
      }],
      rules: rules_basic
    });

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在GUI中创建过滤器时,可以保存此过滤器;

var myFilter = $('#builder-basic').queryBuilder('getRules');

您可以将其存储回数据存储区,就像存储任何其他数据一样。你可能想要序列化它;

var myFilterString="";
if (!$.isEmptyObject(myFilter)) {myFilterString =JSON.stringify(genResult, null, 2);

然后,如果您需要显示此数据,可以将规则作为字符串拉出并反序列化,并使用setRules在GUI中显示规则。

$('#builder-basic').queryBuilder('setRules', JSON.parse(myFilterString));

如果您只是想设置一个不使用GUI创建的规则,您只需要创建一个所需结构的对象并使用setrules - 或者以字符串格式定义它,反序列化并使用setrules。

JSON看起来像这样

var rules_widgets = {
  condition: 'OR',
  rules: [{
    id: 'date',
    operator: 'equal',
    value: '1991/11/17'
  },     {
    id: 'rate',
    operator: 'equal',
    value: 22
  }, {
    id: 'category',
    operator: 'equal',
    value: '38'
  }, {
    condition: 'AND',
    rules: [{
      id: 'coord',
      operator: 'equal',
      value: 'B.3'
    }]
  }]
};