首页 > 解决方案 > 如何更改 Tabulator 中的 ajax 排序参数?

问题描述

如何更改 Tabulator 中的 ajax 排序参数?目前,ajax 排序参数是params.sorters[0]['field']params.sorters[0]['dir']

我找不到任何关于如何自定义它的解决方案,就像我想将 params.sorters[0]['field']更改为“orderBy” 并将 params.sorters[0]['dir'] 更改“dir”

编辑:我使用 react-tabulator 和 Laravel 作为后端

标签: javascriptreactjstabulator

解决方案


tabulator-tables 5.07 也有同样的问题。在这种情况下,它现在发送键下的排序参数sort而不是sorters.

以下示例说明将排序参数 ('sort') 更改回前一个键 ('sorters')。以下是如何修改远程排序参数的要点:

    let myTable = new Tabulator(myTableRef, {                                                                                   
      placeholder: null,                                                                                                                    
      ajaxURL: myAjaxUrl,                                                                                                                                                                                                                                  
      ajaxConfig: {                                                                                                                         
        method: "POST",                                                                                                                     
        headers: {                                                                                                                          
          "Content-type": "application/json; charset=utf-8",                                                                                
        },                                                                                                                                  
      },                                                                                                                                    
      ajaxContentType: {                                                                                                                    
        headers: { 'Content-Type': 'application/json' },                                                                                     
        body: function(url, config, params){                                                                                                 
          // Rewrite 'sort' to 'sorters' to accomodate legacy api expectations.                                                             
          if(params.hasOwnProperty('sort')){                                                                                                
            Object.defineProperty(params, 'sorters',                                                                                        
              Object.getOwnPropertyDescriptor(params, 'sort'))                                                                              
            delete params['sort']                                                                                                           
          }                                                                                                                                 
          return JSON.stringify(params)                                                                                                     
        }                                                                                                                                   
      },
      // remainder of table definition.

使用 TabulatorajaxContentType body指定一个函数来编写 ajax 请求的正文。如果存在排序参数,则需要修改参数。最后,将 params 对象转换为 JSON 并将其作为正文内容返回。


推荐阅读