jQuery DataTable溢出和文本换行问题
jQuery DataTable溢出和文本换行问题
我有一个DataTable(full-width css 类设置宽度= 100%)
LOB Creditor Line 1 Creditor Line 2 Address City State Zip
...
Javascript:
var profileTable = $(".datatable").dataTable({ "iDisplayLength": 25, "bDestroy": true, "bJQueryUI": true, "sPaginationType": "full_numbers", "bAutoWidth": false });
一切正常,直到有一条长文本字符串的记录出现......当出现真正长的文本记录时,数据表格会在页面右侧溢出。(请参见下面的截图,红线是页面应该结束的位置)
http://i1109.photobucket.com/albums/h430/tbarbedo/overflow.jpg
有人能告诉我如何在单元格中换行,或者如何防止这个溢出问题吗?
我尝试过 \'table-layout: fixed\'...这可以防止溢出,但是所有列的宽度都被设置为相同的宽度。
谢谢
我接受了行高只能为一行的限制(对一些人来说这是一种好处)。用于包含长字符串的CSS如下:
.datatable td { overflow: hidden; /* this is what fixes the expansion */ text-overflow: ellipsis; /* not supported in all browsers, but I accepted the tradeoff */ white-space: nowrap; }
[编辑以添加:]在使用自己的代码并最初失败后,我认识到可能有一个第二个要求可以帮助人们。表本身需要有一个固定的布局,否则单元格将继续尝试展开以适应内容,无论如何。如果DataTables样式或您自己的样式尚未这样做,您需要设置它:
table.someTableClass { table-layout: fixed }
现在将文字用省略号截断,要实际“查看”可能隐藏的文本,您可以实现一个工具提示插件或详细信息按钮或其他东西。但是一个快速且简单的解决方案是使用JavaScript将每个单元格的标题设置为与其内容相同。我使用了jQuery,但您并不需要:
$('.datatable tbody td').each(function(index){ $this = $(this); var titleVal = $this.text(); if (typeof titleVal === "string" && titleVal !== '') { $this.attr('title', titleVal); } });
DataTables还提供了在行和单元格渲染级别上的回调,因此您可以提供逻辑以在那个时候设置标题,而不是使用jQuery.each
迭代器。但是,如果您有其他侦听器修改单元格文本,您最好最后用jQuery.each
命中它们。
这整个截断方法也会有一个限制,您表示不喜欢:默认情况下,列将具有相同的宽度。我鉴定将一直是宽或窄的列,并明确地在它们上设置基于百分比的宽度(您可以在标记中或使用sWidth进行设置)。没有明确宽度的任何列都平均分配剩余空间。
这可能看起来是很多妥协,但对我来说最终的结果是值得的。