我正在申请DataTables 在我的HTML表格上使用过滤,排序和分页。我正在使用以下代码将这些属性应用于表:
$(document).ready(function() {
<!-- Sorting and pagination -->
var oTable = $('#mainTable').dataTable( {
"sPaginationType": "full_numbers",
"bJQueryUI": true
});
<!-- Filtering -->
$("thead td").each( function ( i ) {
<!-- Create and populate combo boxes -->
this.innerHTML = fnCreateSelect( oTable.fnGetColumnData(i) );
<!-- Filter data when selection changes -->
$('select', this).change( function () {
oTable.fnFilter( $(this).val(), i );
});
});
});
在函数调用上:
fnCreateSelect( oTable.fnGetColumnData(i));
..组合框中填充了表中的数据。但是,这些框的大小会自动调整为包含值的全长(其中一些跨越多行),因此列的大小太大而且远离页面。我已经确定它不是CSS问题,所以我需要的是一种方法,使组合框每个条目使用多行,或者只显示值的一部分,以便我可以在一个页面上放置所有这些列。
提前致谢!
答案 0 :(得分:0)
回答任何人:
我更改了fnCreateSelect(构建组合框)中的代码,以限制组合框中每个值存储的文本数量:
function fnCreateSelect(aData) {
var r = '<select><option value=""></option>', i, iLen = aData.length;
for (i = 0; i < iLen; i++) {
// If string is a URL, handle it accordingly
if (aData[i].indexOf("href") != -1) {
var url = aData[i].substring(aData[i].indexOf('http'), aData[i].indexOf('">'));
r += '<option title="' + url + '" value="' + url + '">' + url.substring(0, 25);
if (url.length > 25)
r += '...';
}
else {
r += '<option title="' + aData[i] + '" value="' + aData[i] + '">' + aData[i].substring(0, 40)
if (aData[i].length > 40)
r += '...';
}
r += '</option>';
}
return r + '</select>';
}