2017-01-13 1 views
0

Я создаю DataTable в Javascript, который имеет следующие свойства:Javascript Datatable ограничение количества символов показаны в ячейке

var dtable = $('.ssdatatable').DataTable({ 
    "lengthMenu": [[10, 25, 50, 100, 500], [10, 25, 50, 100, 500]], 
    "bProcessing": true, 
    "sDom": "TBflrtip", 
    "bServerSide": true, 
    "sAjaxSource": ajSource, 
    "iDisplayLength": 25, 
    "bJqueryUI": false, 
    "bAutoWidth": false, 
    //"bAutoLength": false, 
    //"bLengthChange": false, 
    "recordsFiltered": 0, 
    "sPaginationType": "full_numbers", 
    "bPaginate": true, 
    "sServerMethod": "POST", 
    "responsive": true, 
    "fixedHeader": true, 
    "buttons": [ 
      'copy', 'excel', 'pdf' 
    ], 
    "aoColumns": [ 
     //columns 
    ] 
}); 

Один из конкретных столбцов является описанием, которое имеет много текста в Это. Ширина столбцов фиксирована, однако из-за этого высота моих строк выдувается из пропорций, делая страницу x10 ее предполагаемого размера.

Мой вопрос: есть все, что я могу добавить в свойства, чтобы сделать его показать только N символов и нажав ограничение было бы что-то вроде:

|text textte...| 
|  Show More|  

(я попробовал закомментированными варианты , сделал мне любой хороший)

Или мне нужно было бы использовать какой-либо метод или изменить css?

+0

То, что я сделал это взяли первые буквы х и поместить его в клетке, затем поместить все это в подсказке. Я использовал плагин для подсказок, чтобы убедиться, что его легко читать. – Bindrid

ответ

1

Приведенные данные:

var mydt = [{ a: 1, b: 2, c: 3, d: 4 }, { a: 5, b: 6, c: 7, d: 8 }, { a: 10, b: 12, c: 13, d: 14 }]; 


        $("#tbl2").DataTable({ 
         columnDefs: [{ targets:[0] }], 
         data: mydt, columns: [{ data: "a" }, { data: "b" }, { data: "c" }, { data: "d" }], 
         createdRow: function (row, data, c, d) { 

         // so for each row, I am pulling out the 2nd td 
         // and adding a title attribute from the 
         // data object associated with the row. 


          $(row).children(":nth-child(2)").attr("title", data.b) 


         }, 



        and the rest 

здесь рабочий один в jfiddle https://jsfiddle.net/bindrid/wbpn7z57/7/ отметить, что это одна имеет данные в другом формате, но он работает (в первом столбце имя)

+0

Это хорошее начало, спасибо. Но есть ли способ расширить остальную часть текста, если пользователь захочет это сделать? –

+0

Если вы нажмете на него, он должен показать вам – Bindrid

+0

Жаль, что нет простого способа включить ссылку, чтобы увеличить высоту строки и показать остальную часть текста, но ваше предложение - хорошее направление. –

0

// DataTable создан крюк createRow, чтобы позволить обновлять html строки после его создания.

- строка является текущей строкой, созданной - данные - объект данных, связанный с строкой.

createdRow: function (row, data, c, d) { 


    $(row) gets the tr in a jQuery object 
    $(row).children() gets all of the td's in the row 
(":nth-child(2)") gets the 2nd td in the row. Note, this is 1 based value,not 0 based. 

    .attr is the jquery command that adds the "title" attribute to the td. 
    the "title" is missed name but too late now. 

    data.b matches the data structured used to populate the table. 
    The actual structure of this data structure is dependent on your data source so you would actually have to check it. 

Надеется, что это помогает :)

+0

Спасибо, я включу эту информацию во время работы над своей частью. –