0

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

提前致谢!

4

1 回答 1

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>';
}
于 2011-01-12T17:00:54.713 回答