Я пытаюсь отформатировать, как данные отображаются в jquery DataTable.
Если текст длинный, я усекаю его, как показано ниже:
{
"data": "col1", "render": function (data, type, row) {
if (type === 'display' && data != null) {
data = data.replace(/<(?:.|\\n)*?>/gm, '');
data = data.split("; ").join("<br/>");
if (data.length > 85) {
return '<span class=\"show-ellipsis\" title="'+data+'">' + data.substr(0, 85) + '</span><span class=\"no-show\">' + data.substr(85) + '</span>';
} else {
return data;
}
} else {
return data;
}
}
},
и используйте следующий CSS вместе с подсказкой пользовательского интерфейса jquery.
CSS
span.no-show {
display: none;
}
span.show-ellipsis:after {
content: "...";
}
Подсказка jQuery UI
<script>
$(function () {
$(document).tooltip({
items: 'span.show-ellipsis',
content: function () {
return $(this).attr('title');
},
position: {
my: "center bottom",
at: "center top-10",
collision: "flip",
using: function (position, feedback) {
$(this).addClass(feedback.vertical)
.css(position);
}
}
});
});
Таким образом, это выглядит красиво в DataTable,
На приведенном выше снимке экрана вместо метода <br/>
в методе замены было указано <hr>
, но поведение остается прежним. Работает нормально, если заменить на \n
. Когда я пытаюсь экспортировать PDF, данные повторяются. В частности, data.substr (85) part.
Что я делаю не так?
Спасибо