datatables - 我正在尝试从数据表中选择单元格并将它们复制到剪贴板
问题描述
我可以使用 selectCells 按钮选择单元格,但无法将选定的单元格复制到剪贴板。我想要一个将选定单元格复制到剪贴板的按钮
$(document).ready(function(){
$('#example').DataTable({
lengthChange: false,
extend: 'collection',
dom: 'Bfrtip',
buttons: [ 'csv', 'excel', 'pdf','selectNone','selectCells',{extend:'copy',text: 'Copy name',
className: 'btn btn-primary btn-primary-spacing',cells: function ( idx, data, node ) {
return table.cells( { selected: true } ).data()
}}],
select: true,
});
解决方案
以下包含对您提供的链接中的示例演示的一些小的更改:
{
text: 'Copy Select Cells',
action: function ( e, dt, node, config ) {
var data = table.cells( { selected: true } ).data();
console.log(data.length);
var copyString = '';
for (var i = 0; i < data.length; i++) {
copyString = copyString + data[i] + '\t';
console.log(copyString);
}
copyString = copyString.trim(); // to remove trailing tab character
if (copyString !== undefined) {
var dummy = document.createElement("input");
document.body.appendChild(dummy);
dummy.setAttribute("id", "dummy_id");
document.getElementById("dummy_id").value=copyString;
dummy.select();
document.execCommand("copy");
document.body.removeChild(dummy);
}
}
}
主要变化是:
它使用
table.cells(...)
而不是table.cell(...)
.它遍历选定的单元格,并从值构建单个字符串。
每个值都由制表符分隔
\t
。
这假设您希望将结果放在单个字符串中。
如果您希望将每行中的单元格数据与其他行分开(例如,通过换行符),那么您必须增强此代码以跟踪单元格行索引。
因为您没有使用标准的“复制/导出”功能,所以您不会收到内置的“复制到剪贴板”通知。您必须为此添加自定义警报。我认为您不能使用该标准功能来满足您的要求。该功能是基于行和列的 - 这就是它也可以复制列标题的方式。
如果您正在挑选要导出的特定单元格,我不知道还有一种方法来获取相关的列标题 - 或者如何将这些标题添加到剪贴板中的数据中。
推荐阅读
- reactjs - 如何在反应中从输入字段中删除绿色?
- java - 另一个 javafx 程序中的 javafx 程序
- c# - 从列表中查找未完成任务的详细信息
- amazon-web-services - ECS 服务 aws-cli 与仪表板
- ios - 使用 Swift 和 Objective-C 时与领域“大小”对象的名称冲突
- python - Python - 关于登录 __init__.py 的问题
- r - 自定义函数中的数据框字符串搜索
- angular - 将数据从 subscribe() 传输到 Angular 6 中的变量
- multithreading - Shell脚本多线程运行
- view - 在一个 select 语句中的所有视图中查找某个列名