可调整大小的数据表列 [jquery]

Posted

技术标签:

【中文标题】可调整大小的数据表列 [jquery]【英文标题】:columns of datatables resizable [jquery] 【发布时间】:2021-12-22 16:53:45 【问题描述】:

我想手动调整表格列的大小。

在 Stack Overflow 上搜索并尝试过

How to make columns of datatables.js resizable with jQuery UI & jQuery UI Resize with table and colspans

还有google例子,官方文档。

https://github.com/dobtco/jquery-resizable-columns & http://jsfiddle.net/Twisty/ah67jopf/3/

我的示例代码

<table id="examTbl" class="table table-bordered table-hover table-sm dataTable dtr-inline" data-resizable="true">
<thead>
    <tr>
       <th><input type="checkbox" id="chkbox"></th>
       <th>1</th>
       <th>2</th>
    </tr>
</thead>
</table>

<style>
table, td, th 
    /*table-layout:fixed;*/
    overflow:hidden;
    white-space: nowrap;
    text-overflow: ellipsis;

</style>

数据表设置

var table_option = 
   processing: true,
   serverSide: true,
   searching: false,
   responsive: true,
   dom: "lfBtip",
   ajax: 
      url: '/get/textVal'
   ,
   columns: [
      data: 'null',
      defaultContent: "<input type='checkbox' class='chkbox'>",
   ,
    data: 'test1' ,
    data: 'test2' ,
   ],
   autoWidth: false,
   drawCallback: function(settings) 
                
   $('table th').resizable(
     handles: 'e',
     minWidth: 18,
     stop: function(e, ui) 
     $(this).width(ui.size.width);
    
  );
 

【问题讨论】:

控制台没有错误。 【参考方案1】:

我认为您可以在样式中添加“resize”css 属性。

<table id="examTbl" class="table table-bordered table-hover table-sm dataTable dtr-inline" data-resizable="true">
<thead>
    <tr>
       <th><input type="checkbox" id="chkbox"></th>
       <th>1</th>
       <th>2</th>
    </tr>
</thead>
</table>

<style>
table, td, th 
    /*table-layout:fixed;*/
    overflow:hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    resize:horizontal;

【讨论】:

感谢您的回复。如果我按照你说的那样做,只有表格顶部的行移动,包含下面数据的行是相同的。如何解决? 您是否希望“调整大小”功能出现在表格的标题中,而不是出现在内容中? 是的,我想做的表格就像这个例子。 examples.bootstrap-table.com/#extensions/resizable.html(只能调整上排,调整下排也调整下排)【参考方案2】:

编辑: 尝试在您的数据表设置中添加“autoWidth:false”:

var table_option = 
   processing: true,
   serverSide: true,
   searching: false,
   autoWidth: false,
   responsive: true,
   dom: "lfBtip",
   ajax: 
      url: '/get/textVal'
   ,
   columns: [
      data: 'null',
      defaultContent: "<input type='checkbox' class='chkbox'>",
   ,
    data: 'test1' ,
    data: 'test2' ,
   ],
   autoWidth: false,
   drawCallback: function(settings) 
                
   $('table th').resizable(
     handles: 'e',
     minWidth: 18,
     stop: function(e, ui) 
     $(this).width(ui.size.width);
    
  );
 

在这个小提琴中解决了:http://jsfiddle.net/Twisty/ah67jopf/3/

【讨论】:

以上是关于可调整大小的数据表列 [jquery]的主要内容,如果未能解决你的问题,请参考以下文章

可调整大小的画布(JQuery UI)

带有可调整大小的列的 Tailwind 两列布局

jQuery UI 可调整大小:单独使用东手柄时的自动高度

如何使用 jQuery UI 获取可拖动和可调整大小元素的坐标

如何使 html 表格列可调整大小?

Jquery UI 可排序和可调整大小的 Div