从排序中排除行 - Datatables.net

时间:2016-11-02 14:39:12

标签: javascript php jquery ruby-on-rails-3 datatables

我有一个关于如何从排序中排除行(tr)的问题。我想制作类似http://jsfiddle.net/rishijagati/WwDg8/213/的内容,但我不想在jQuery中设置隐藏行的数据。 我想你可以在<tr>元素中添加一个类,然后在初始化jQuery上的数据表时管理不对这个<tr>进行排序。 实际上我有这样的初始化:

$('.ordered_table').dataTable({
        "sPaginationType": "full_numbers",
        "dom": '<"toolbar">frtip',
        "pagingType": "numbers",
        "searching": false,
        "pageLength": 20,
        columnDefs: [{
          targets:  ['datatable-nosort'],
          orderable: false,  
          bsortable: false
        }],
        "aaSorting": []
 });

datatable-nosort用于不对列进行排序,这不适用于行。

现在总是显示此消息,但我已经取得了手风琴效果,但排序无效。

  

未捕获的TypeError:无法设置属性&#39; _DT_CellIndex&#39;未定义的

我的表是这样的:

<tr class="tr_tbody accordion">
   <td><%= order.id %></td>
   <td><%= order.created_at.strftime("%d/%m/%Y") %></td>
   <td><%= order.exhibitor_corporate_name %></td>
   <td><%= order.candidate_first_name %> <%= order.candidate_last_name %></td>
   <td><%= !order.engagements.first.nil? ? order.engagements.first.date.strftime("%d/%m/%Y") : ''   %></td>
   <td><%= !order.engagements.last.nil? ? order.engagements.last.date.strftime("%d/%m/%Y") : ''   %></td>
   <%
   number = @total_hours
   parts = number.to_s.split(".")
   result = parts.count > 1 ? parts[1].to_s : 0
   result = '0' + '.' + result.to_s
   hours = parts.count > 1 ? parts[0].to_s : 0
   %>
   <td class="datatable-nosort">
      <%= hours.to_s %>
      <%= 'h. ' %>
      <%= (result.to_f*60).to_i %>
      <%= 'm.' %> 
   </td>
   <td><%= @price_ngage %>€</td>
   <td></td>
</tr>
<tr >
   <td colspan="9">
   Order details
   </td>
</tr> 

2 个答案:

答案 0 :(得分:2)

这对我有用:

<table>
<thead>
...
</thead>
<tbody>
...
</tbody>
<tfoot>
    <tr class="no-sort">
        <td>...</td>
        <td>...</td>
    </tr>
</tfoot>
</table>

答案 1 :(得分:0)

来自columnDefs.targets选项的文档:

  

...类名称将与列的TH匹配(不含前导.

因此,您必须将类datatable-nosort应用于标题中的TH元素。

最有可能发生另一个错误,因为DataTables不支持表正文中的colspanrowspan。要显示其他详细信息,请改用child row functionality