【问题标题】:How to display more than one filter drop-down in the data table?如何在数据表中显示多个过滤器下拉列表?
【发布时间】:2018-11-09 08:53:48
【问题描述】:

我正在使用数据表来显示正在工作的列表。现在默认过滤器我得到Show entriessearch

我必须为名为@9​​87654324@ 的过滤器再添加一个下拉列表。如果用户选择“Leader”,那么它将被填充记录并显示在列表中。 和

如何在顶部而不是底部显示两个以上的下拉菜单?

你能帮我解决这个问题吗?

var Table = $('#list').DataTable();
.e_list {
  width: 80%;
  margin: auto;
  text-align: center;
}
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
<div class="body_wrapper">
  <div class="pad0 m_b_20">
    <div class="e_list">
      <table cellspacing="0" id="list">
        <thead>
          <tr>
            <th>Sr.no</th>
            <th> Employee Name </th>
            <th> Mobile No. </th>
            <th> Designation </th>
            <th> Role </th>
            <th> Status </th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>1</td>
            <td>mnbv vfgds</td>
            <td>asdf</td>
            <td>789654120</td>
            <td>Leader</td>
            <td>Admin</td>
          </tr>

          <tr>
            <td>2</td>
            <td>poijh</td>
            <td>asdfasd</td>
            <td>789145220</td>
            <td>Employee</td>
            <td>CSR</td>
          </tr>
        </tbody>
      </table>

    </div>
  </div>
  <div class="btn_container  "> </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script type="text/javascript" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>

【问题讨论】:

标签: javascript jquery html datatables


【解决方案1】:

HTML

$(document).ready(function() {
    $('#list').DataTable( {
        initComplete: function () {
            this.api().columns("4").every( function () {
                var column = this;
                var select = $('<select><option value=""></option></select>')
                    .appendTo( $("#role_menu_placeholder").empty() )
                    .on( 'change', function () {
                        var val = $.fn.dataTable.util.escapeRegex(
                            $(this).val()
                        );
 
                        column
                            .search( val ? '^'+val+'$' : '', true, false )
                            .draw();
                    } );
 
                column.data().unique().sort().each( function ( d, j ) {
                    select.append( '<option value="'+d+'">'+d+'</option>' )
                } );
            } );
			
			            this.api().columns("5").every( function () {
                var column = this;
                var select = $('<select><option value=""></option></select>')
                    .appendTo( $("#status_menu_placeholder").empty() )
                    .on( 'change', function () {
                        var val = $.fn.dataTable.util.escapeRegex(
                            $(this).val()
                        );
 
                        column
                            .search( val ? '^'+val+'$' : '', true, false )
                            .draw();
                    } );
 
                column.data().unique().sort().each( function ( d, j ) {
                    select.append( '<option value="'+d+'">'+d+'</option>' )
                } );
            } );
        }
    } );
} );
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
<div class="body_wrapper">
  <div class="pad0 m_b_20">
  <div>
  <label>Role: </label>
  <span id="role_menu_placeholder"></span>
  </div>
  <div>
  <label>Status: </label>
    <span id="status_menu_placeholder"></span>
  </div>
    <div class="e_list">
      <table cellspacing="0" id="list">
        <thead>
          <tr>
            <th>Sr.no</th>
            <th> Employee Name </th>
            <th> Mobile No. </th>
            <th> Designation </th>
            <th> Role </th>
            <th> Status </th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>1</td>
            <td>mnbv vfgds</td>
            <td>asdf</td>
            <td>789654120</td>
            <td>Leader</td>
            <td>Admin</td>
          </tr>

          <tr>
            <td>2</td>
            <td>poijh</td>
            <td>asdfasd</td>
            <td>789145220</td>
            <td>Employee</td>
            <td>CSR</td>
          </tr>
        </tbody>
           <tfoot>
      <tr>
        <th></th>

        <th></th>

        <th></th>

        <th></th>

        <th></th>

        <th></th>
      </tr>
    </tfoot>
      </table>

    </div>
  </div>
  <div class="btn_container  "> </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script type="text/javascript" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>

我用数据表官方文档中的代码想出了这个

【讨论】:

  • 给我一些时间来理解和用我的代码实现你的答案。
  • 我只想知道如何在底部的顶部显示下拉菜单?
  • 我已经修改了代码,将菜单放在顶部而不是底部。基本上,您可以在要放置下拉菜单的任何位置创建一个
    ,然后创建一个跨度并将跨度 ID 作为代码的“.appendTo”部分的参数传递。在这种情况下,我创建了一个 ID 为“role_menu_placeholder”的跨度,并将这个 ID 传递给了 .appendTo()
  • 那么是否需要使用?我所做的,我添加了列(“4,5”),因为我必须同时显示两者。但由于 .appendTo( $("#role_menu_placeholder").empty() ) 它只显示一列第 4 列
  • 如何同时显示?
猜你喜欢
相关资源
最近更新 更多
热门标签