-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvirtual-fields-in-datatables.html
More file actions
117 lines (111 loc) · 5.92 KB
/
Copy pathvirtual-fields-in-datatables.html
File metadata and controls
117 lines (111 loc) · 5.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Виртуальные поля в DataTables</title>
<meta name="description" content="Создание виртуальных, или содержащих комбинацию данных из других, полей в DataTables">
<meta name="author" content="Андрей Котельник">
<meta name="viewport" content="width=device-width">
<meta name="google-site-verification" content="srcHAgeuk6CVcbIN_EgR07rRYW1oG420EIbLWAB73P4" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=PT+Serif:400,400italic,700%7CPT+Sans:400">
<link rel="stylesheet" href="/assets/build/css/main.css?id=63efd47ac29e03c51d5e">
<!-- Icons -->
<link rel="apple-touch-icon" sizes="144x144" href="/assets/images/apple-touch-icon-precomposed.png">
<link rel="shortcut icon" href="/assets/images/favicon.ico">
</head>
<body>
<!-- Target for toggling the sidebar `.sidebar-checkbox` is for regular
styles, `#sidebar-checkbox` for behavior. -->
<input type="checkbox" class="sidebar-checkbox" id="sidebar-checkbox" />
<!-- Toggleable sidebar -->
<div class="sidebar" id="sidebar">
<aside class="sidebar-item">
<p class="text-justify">Здесь должен быть текст, который покажет, что я не только хороший специалист, но и приятный человек, но я его пока не придумал</p>
</aside>
<nav class="sidebar-nav">
<a href="about.html" class="sidebar-nav-item">Кто здесь?!</a>
<a href="https://github.com/Ascendens" class="sidebar-nav-item" rel="nofollow">GitHub</a>
</nav>
<footer class="sidebar-item">
<p>© 2017 - 2019 ascendens.github.io</p>
</footer>
</div>
<div class="wrap">
<div class="masthead">
<header class="container">
<h3 class="masthead-title">
<a href="/" title="Home">Пытаясь программировать</a>
<small>...иногда даже получается</small>
</h3>
</header>
</div>
<main class="container content"><article class="post">
<header>
<h1 class="post-title">Виртуальные поля в DataTables</h1>
<time class="post-date" datetime="2017-06-08T21:58:00+03:00">08 Июн 2017</time>
</header>
<p>Данные, которых нет... Тесты, которых нет... Ладно, не будем о грустном.</p>
<p>Предположим, у нас есть список имен и фамилий некоторых подозрительных личностей. Нам нужна таблица, в которой будут
следующие колонки:</p>
<ol>
<li>Имя.</li>
<li>Фамилия.</li>
<li>Имя + Фамилия (те самые загадочные данные).</li>
</ol>
<p>Давайте начнем с малого и сделаем таблицу c идентификатором <code>names</code>, содержащую только имя и фамилию:</p>
<pre><code class="language-javascript">// Прекрасно! Ничего лишнего!
$('#names').DataTable({
data: [
{firstName: 'John', lastName: 'Doe'},
{firstName: 'Jane', lastName: 'Doe'}
],
columns: [
{title: "First name", data: "firstName"},
{title: "Second name", data: "lastName"}
]
});</code></pre>
<p>Появляется мысль, что этого достаточно, но руководство упорствует - они хотят колонку, где указано полное имя. Думая
разное про себя, идем читать документацию библиотеки и находим опцию
<a href="https://datatables.net/reference/option/columns.render">columns.render</a>.</p>
<p>Много хорошего и разного поволяет делать она. Дабы не усложнять, зададим значение по умолчанию <code>_</code>:</p>
<pre><code class="language-javascript">columns: [
{title: "First name", data: "firstName"},
{title: "Second name", data: "lastName"},
{
title: "Full name",
data: null,
render: {
_: function (rowData) {
return rowData.firstName + ' ' + rowData.lastName;
}
}
}
]</code></pre>
<p>Вот и сбылась мечта - создано полноценное виртуальное поле!</p>
<blockquote>
<p><del>Лицензия от</del> С полным рабочим примером можно ознакомиться прямо <a href="https://jsfiddle.net/7dbj6vju/7/">здесь</a>.</p>
</blockquote>
</article>
</main>
</div>
<label for="sidebar-checkbox" class="sidebar-toggle"></label>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
if (window.location.host.indexOf('local') === -1) {
ga('create', 'UA-18144383-3', 'auto');
ga('send', 'pageview');
}
</script>
<script src="/assets/build/js/highlight.min.js"></script>
<script src="/assets/build/js/highlightjs-line-numbers.min.js"></script>
<script>
hljs.initHighlightingOnLoad();
hljs.initLineNumbersOnLoad();
</script>
</body>
</html>