Reputation: 97
I am creating a Datatable in jquery. I have an array of strings which contain the titles for the headers. I want to add these titles to the datatable. How can I do this?
Here is my code:-
html code:-
<table border="1" id="mDataTable" class="display" cellspacing="1" cellpadding="1" width="100%">
<thead>
<tr>
</tr>
</thead>
<tbody>
</tbody>
</table>
jquery code:-
var columnArray = jsonArray[1];
var titleArray = [];
for (var j = 0; j < columnArray.length; j++) {
var parsedJson = $.parseJSON(JSON.stringify(columnArray[j]))
var mTitles = parsedJson["name"];
titleArray.push(mTitles);
}
$('#mDataTable').DataTable({
"columns": titleArray
});
the titleArray = ["America", "India", "China", "Japan"]
the
jquery[1] = "Columns":[{"name":"ID","field":"id"},{"name":"America","field":"america"},{"name":"India","field":"india"},{"name":"China","field":"china"},{"name":"Japan","field":"japan"}],
Doing the above I get the error
Uncaught TypeError: Cannot use 'in' operator to search for '10' in America
EDIT
With CerilBoss's answer I get a table like this
I am new to jquery and would appreciate any help.
Upvotes: 1
Views: 13786
Reputation: 6722
append the header data before initializing the dataTable
CODE
var jsonArray = {"Columns":[{"name":"ID","field":"id"},{"name":"America","field":"america"},{"name":"India","field":"india"},{"name":"China","field":"china"},{"name":"Japan","field":"japan"}]};
var columnArray = jsonArray['Columns'];
var titleArray = [];
$('table thead tr').empty();
for (var j = 0; j < columnArray.length; j++) {
var parsedJson = $.parseJSON(JSON.stringify(columnArray[j]))
var mTitles = parsedJson["name"];
$('table thead tr').append("<th>"+ mTitles +"</th>");
};
$('table').DataTable();
UPDATED FIDDLE
UPDATED CODE
var jsonArray = {"Columns":[{"name":"ID","field":"id"},{"name":"America","field":"america"},{"name":"India","field":"india"},{"name":"China","field":"china"},{"name":"Japan","field":"japan"}]};
var columnArray = jsonArray['Columns'];
var titleArray = [];
for (var j = 0; j < columnArray.length; j++) {
var temp = {};
temp['title'] = columnArray[j]["name"];
titleArray.push(temp);
};
$('table').DataTable({ "columns": titleArray});
UDPATE
Check this latest fiddle
Upvotes: 4