DataTables组合框宽度

时间:2011-01-11 15:21:54

标签: html css datatables

我正在申请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问题,所以我需要的是一种方法,使组合框每个条目使用多行,或者只显示值的一部分,以便我可以在一个页面上放置所有这些列。

提前致谢!

1 个答案:

答案 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>';
}