jQuery DataTables Summary (edit)

http://www.ville-pont-eveque.fr/tools/library/DataTables/examples/data_sources/js_array.html

https://manhng.com/blog/scrud/

https://manhng.com/blog/jquery-datatables-event-prexhr/

https://manhng.com/blog/datatables-editable/

https://manhng.com/blog/jquery-datatables/

https://manhng.com/blog/jquery-datatables-ajax/

https://manhng.com/blog/jquery-datatables-server-side-stored-procedure/

https://manhng.com/blog/jquery-datatables-in-net-core/

https://manhng.com/blog/reactjs/

https://manhng.com/blog/jquery-datatables-server-side-processing/

https://manhng.com/archive/jquery-datatables-server-side-processing/

https://manhng.com/blog/datatables-ajax/

https://manhng.com/blog/mvc-best-practices/

https://manhng.com/blog/jquery-usage/

https://manhng.com/blog/export-excel-js/

https://manhng.com/blog/systems-architecture/

CRUD Automatically Add Table TD, TR

https://www.codemag.com/Article/1511031/CRUD-in-HTML-JavaScript-and-jQuery

Realtime jQuery Datatable with Pusher

https://github.com/christiannwamba/pusher-realtime-jquery-datatable/

https://material.io/components/data-tables

https://www.c-sharpcorner.com/article/create-datatable-in-jquery/

https://techgrafitti.wordpress.com/2014/11/18/jquery-datatables-empty-table-custom-text-clear-datatable-search-columns/

Getting Started

https://www.aspsnippets.com/Articles/Simple-jQuery-DataTables-Tutorial-with-example-in-ASPNet.aspx

https://www.c-sharpcorner.com/article/display-data-in-Asp-Net-using-jquery-datatables-plugin/

https://www.c-sharpcorner.com/article/using-jquery-datatables-grid-with-asp-net-core-mvc/

https://www.c-sharpcorner.com/article/using-datatables-grid-with-asp-net-mvc/

Source (Server)

DTO Item class

 public class JsonData
{
public int draw { get; set; }
public int recordsFiltered { get; set; }
public int recordsTotal { get; set; }
public List<Item> data { get; set; }

public JsonData()
{
draw = 1;
recordsFiltered = 0;
recordsTotal = 0;
data = new List<Item>();
}
}

XML Data ~ Array or List of DTO (Item class)

<Data><Items><Item><UserType>{0}</UserType><DocType>{1}</DocType><OrderCode>{2}</OrderCode><Phase>{3}</Phase><Namespace>{4}</Namespace><Type>{5}</Type><Method>{6}</Method><MethodTitle>{7}</MethodTitle><Mean>{8}</Mean><Dtn>{9}</Dtn></Item></Items></Data>

Source (Client)

https://manhng.com/blog/jquery-datatables-event-prexhr/

https://manhng.com/blog/jquery-datatables-ajax/

https://www.c-sharpcorner.com/article/using-jquery-datatables-grid-with-asp-net-core-mvc/

Html

<body>
<div class="datatable-statistic">
<table id="demoGrid" class="table table-striped table-bordered dt-responsive nowrap" width="100%" cellspacing="0">
<thead>
<tr>
<th>UserType</th>
<th>DocType</th>
<th>OrderCode</th>
<th>Phase</th>
<th>Namespace</th>
<th>Type</th>
<th>Method</th>
<th>MethodTitle</th>
<th>Mean</th>
<th>Execution time</th>
</tr>
</thead>
</table>
</div>
</body>

CSS & CDN

<link href="https://cdn.datatables.net/1.10.15/css/dataTables.bootstrap.min.css" rel="stylesheet" />
<link href="https://cdn.datatables.net/responsive/2.1.1/css/responsive.bootstrap.min.css" rel="stylesheet" />

<style>
.datatable-statistic {
margin: 10px;
}

#demoGrid td:nth-child(8),
#demoGrid th:nth-child(8) {
font-weight: bold;
}
</style>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script src="https://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.15/js/dataTables.bootstrap4.min.js"></script>

JavaScript

<script>
$(document).ready(function () {
var table = $("#demoGrid").DataTable({
"processing": true, // for show progress bar
"serverSide": true, // for process server side
"filter": true, // this is for disable filter (search box)
"orderMulti": false, // for disable multiple column at once
"pageLength": 20,
"ajax": {
"url": "/Home/LoadData",
"type": "POST",
"datatype": "json"
},
"columnDefs":
[{
"targets": [0],
"visible": false,
"searchable": false
},
{
"targets": [1],
"searchable": false,
"orderable": false
},
{
"targets": [2],
"searchable": true,
"orderable": true
},
{
"targets": [3],
"searchable": true,
"orderable": true
},
{
"targets": [4],
"searchable": true,
"orderable": true
},
{
"targets": [5],
"searchable": true,
"orderable": true
},
{
"targets": [6],
"searchable": true,
"orderable": true
},
{
"targets": [7],
"searchable": true,
"orderable": true
},
{
"targets": [8],
"searchable": true,
"orderable": true
},
{
"targets": [9],
"searchable": true,
"orderable": true
}],
"columns": [
{ "data": "UserType", "name": "UserType", "autoWidth": true },
{ "data": "DocType", "name": "DocType", "autoWidth": true },
{ "data": "OrderCode", "title": "OrderCode", "name": "OrderCode", "autoWidth": true },
{ "data": "Phase", "name": "Phase", "autoWidth": true },
{ "data": "Namespace", "name": "Namespace", "autoWidth": true },
{ "data": "Type", "name": "Type", "autoWidth": true },
{ "data": "Method", "name": "Method", "autoWidth": true },
{ "data": "MethodTitle", "name": "MethodTitle", "title": "MethodTitle", "autoWidth": true },
{ "data": "Mean", "name": "Mean", "title": "Mean", "autoWidth": true },
{ "data": "Dtn", "name": "Dtn", "title": "Execution time", "autoWidth": true }
]

});
table.on('preXhr.dt', function (e, settings, data) {
//Before send Ajax
console.log('preXhr.dt');
});
table.on('xhr.dt', function (e, settings, json) {
//After send Ajax
console.log('xhr.dt');
});
table.on('xhr', function () {
var json = table.ajax.json();
console.log('xhr');
console.log(json.data.length + ' row(s) were loaded');
});
});

</script>