使用 Bootstrap 5 主题搜索字段和显示条目未对齐的 jquery 表

Posted

技术标签:

【中文标题】使用 Bootstrap 5 主题搜索字段和显示条目未对齐的 jquery 表【英文标题】:Search Field and Show Entry miss-aligned jquery table with Bootstrap5 theme 【发布时间】:2021-10-19 03:07:35 【问题描述】:

我在使用 Bootstrap 5 主题制作简单的 DataTable 时遇到了一些麻烦。主要问题是“显示条目”和“搜索栏”以及表格底部的页面部分未对齐(最好在下图中看到)。我必须提到,如果我使用其他样式,它们是对齐的。该问题仅适用于 bootstrap 5 主题数据表

Snip Picture

我已经包含了所有必要的插件:

<!--css plugins for table-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap5.min.css">


<!--js plugins for table-->
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.25/js/dataTables.bootstrap5.min.js"></script>

表格的 html 部分非常基本:

<section class="container shadow">
        <div class="table-responsive">
            <table id="lista_proiecte" class="table table-striped table-hover">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Judet</th>
                        <th>Localitate principala</th>
                        <th>Siruta superioara</th>
                        <th>Localitati apartenente </th>
                        <th>Sirute inferioare</th>
                        <th>Tipul solicitarii</th>
                        <th>Data intrare</th>
                        <th>Ultimul status</th>
                        <th>Utilizator</th>
                        <th>Deadline</th>
                    </tr>
                </thead>
            </table>
        </div>
</section>

该表是使用 AJAX 从 SQL 数据库自动填充的。我不太确定它是否有影响,但我会把它放在这里。

$(document).ready(function()
var dataTable = $('#lista_proiecte').DataTable(
    "processing": true,
    "serverSide": true,
    "order":[],
    "ajax":
        url:"php/acasa_listaproiecte_fetch.php",
        type:"POST",
        
    ,

    "lengthMenu": [ [10, 25, 50, -1], [10, 25, 50, "All"] ],
    
    createdRow:function(row, data, rowIndex)
    
        $.each($('td', row), function(colIndex)
            if(colIndex == 1)
            
                $(this).attr('data-name', 'judet');
                $(this).attr('class', 'judet');
                $(this).attr('data-type', 'text');
                $(this).attr('data-pk', data[0]);
            
            if(colIndex == 2)
            
                $(this).attr('data-name', 'localitate_principala');
                $(this).attr('class', 'localitate_principala');
                $(this).attr('data-type', 'text');
                $(this).attr('data-pk', data[0]);
            
            if(colIndex == 3)
            
                $(this).attr('data-name', 'siruta_superioara');
                $(this).attr('class', 'siruta_superioara');
                $(this).attr('data-type', 'text');
                $(this).attr('data-pk', data[0]);
            
            if(colIndex == 4)
            
                $(this).attr('data-name', 'localitati_apartenente');
                $(this).attr('class', 'localitati_apartenente');
                $(this).attr('data-type', 'text');
                $(this).attr('data-pk', data[0]);
            
            if(colIndex == 5)
            
                $(this).attr('data-name', 'sirute_inferioare');
                $(this).attr('class', 'sirute_inferioare');
                $(this).attr('data-type', 'text');
                $(this).attr('data-pk', data[0]);
            
            if(colIndex == 6)
            
                $(this).attr('data-name', 'tip_solicitare');
                $(this).attr('class', 'tip_solicitare');
                $(this).attr('data-type', 'text');
                $(this).attr('data-pk', data[0]);
            
            if(colIndex == 7)
            
                $(this).attr('data-name', 'data_intrare');
                $(this).attr('class', 'data_intrare');
                $(this).attr('data-type', 'text');
                $(this).attr('data-pk', data[0]);
            
            if(colIndex == 8)
            
                $(this).attr('data-name', 'ultimul_status');
                $(this).attr('class', 'ultimul_status');
                $(this).attr('data-type', 'text');
                $(this).attr('data-pk', data[0]);
            
            if(colIndex == 9)
            
                $(this).attr('data-name', 'nume_utilizator');
                $(this).attr('class', 'nume_utilizator');
                $(this).attr('data-type', 'text');
                $(this).attr('data-pk', data[0]);
            
            if(colIndex == 10)
            
                $(this).attr('data-name', 'deadline');
                $(this).attr('class', 'deadline');
                $(this).attr('data-type', 'text');
                $(this).attr('data-pk', data[0]);
            
        );
    
);

)

【问题讨论】:

【参考方案1】:

此示例适用于 Bootstrap 5 主题。 我为你做了一个 jsfiddle:https://jsfiddle.net/bogatyr77/g7ntd8rk/8/ 只需使用 Result 窗口,您就会看到 Search 和其他 Stuff 调整得很好。

$(document).ready(function() 
  $('#lista_proiecte').DataTable(
    ajax: "https://raw.githubusercontent.com/bmehler/employees/main/personal",
    "lengthMenu": [
      [10, 25, 50, -1],
      [10, 25, 50, "All"]
    ],
    "columns": [
        "data": "id"
      ,
      
        "data": "name"
      ,
      
        "data": "job"
      
    ],
    "createdRow": function(row, data, dataIndex) 
      $.each($('td', row), function(colIndex) 
        if (colIndex == 1) 
          $(this).attr('data-name', 'judet');
          $(this).attr('class', 'judet');
          $(this).attr('data-type', 'text');
          $(this).attr('data-pk', data.job);
        
      );
    
  );
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.25/js/dataTables.bootstrap5.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.1/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap5.min.css" rel="stylesheet" />
<section class="container shadow">
  <div class="table-responsive">
    <table id="lista_proiecte" class="table table-striped table-hover">
      <thead>
        <tr>
          <th>ID</th>
          <th>Judet</th>
          <th>Localitate principala</th>
          <th>Siruta superioara</th>
          <th>Localitati apartenente </th>
          <th>Sirute inferioare</th>
          <th>Tipul solicitarii</th>
          <th>Data intrare</th>
          <th>Ultimul status</th>
          <th>Utilizator</th>
          <th>Deadline</th>
        </tr>
      </thead>
    </table>
  </div>
</section>

【讨论】:

谢谢。我使用了 DataTables 的 packagegase,并设法使外观看起来不错。所以我假设其余的检查这个主题,确保你有正确的顺序包含正确的 js 和 css 文件

以上是关于使用 Bootstrap 5 主题搜索字段和显示条目未对齐的 jquery 表的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 3.0 导航栏中的多个折叠按钮

bootstrap组件学习之导航条

怎样在django 模板中只显示前n条记录

日期选择器不工作/显示 - Bootstrap 5

Bootstrap 4 和使用图标的表单控制反馈

使用`jQuery验证`和`Select2`根据`bootstrap4`显示和隐藏成功和错误[重复]