使用ready函数时,jqxgrid请求被调用两次

时间:2018-11-23 06:45:42

标签: javascript jquery ajax jqxgrid jqwidget

我正在使用jqwidgets jqxgrid在网格中显示记录。我的要求是在页面加载时添加初始过滤器。所以我为初始过滤器创建了一个函数,并在ready函数下使用了它。但是在加载页面时,有两个请求被触发,一个是针对没有初始过滤器的默认请求,第二个是针对初始过滤器数据的请求。所以为什么请求被调用两次是我做错了绑定,请帮忙。

var source =
    {
      datafields:
        [
          {name: 'id', type: 'number'}
          ........
        ],
      url: 'http://testapi-application.localhost.com/cases/search',
      datatype: 'json',
      pagesize: 20,
      type: 'post',
      root: 'Rows',
      cache: false,
      sortcolumn: 'id',
      sortdirection: 'desc',
      data: {
        params: basicFilters,
      },
      filter: function () {
        $('#jqxgrid').jqxGrid('updatebounddata', 'filter')
      },
      sort: function () {
        $('#jqxgrid').jqxGrid('updatebounddata', 'sort')
      },
      beforeprocessing: function (data) {
        if (data != null && data.length > 0) {
          source.totalrecords = data[0].TotalRows
        }
      },
      pager: function (pagenum, pagesize, oldpagenum) {
        $('#jqxgrid').jqxGrid('updatebounddata', 'data')
      },
    }

以下是用于初始过滤器的addfilter函数

var addfilter = function () {
    var filtergroup = new $.jqx.filter();
    var filter_or_operator = 1;
    var filtervalue = 'In store awaiting dispatch to repairer';
    var filtercondition = 'equal';
    var filter1 = filtergroup.createfilter('stringfilter', filtervalue, filtercondition);
    filtergroup.addfilter(filter_or_operator, filter1);
    $("#jqxgrid").jqxGrid('addfilter', 'repairer_status', filtergroup);
    $("#jqxgrid").jqxGrid('applyfilters');
  }

var dataAdapter = new $.jqx.dataAdapter(source)

//叫做jqxgrid

$('#jqxgrid').jqxGrid(
    {
      source: dataAdapter,
      altrows: true,
      width: 1106,
      autoheight: true,
      sortable: true,
      filterable: true,
      showfilterrow: true,
      showsortmenuitems: false,
      pageable: true,
      virtualmode: true,
      rendergridrows: function (obj) {
        return obj.data
      },
      ready: function () {
        addfilter()
      },
      sorttogglestates: 1,
      autoshowloadelement: false,
      columnsresize: true,
      autorowheight: true,
      columnsheight: 40,
      enablebrowserselection: true,
      columns: [ ... ]
 })

帮助我了解如何在页面加载时使用初始过滤器加载网格。

0 个答案:

没有答案