Я создаю таблицу в представлении для проекта MVC asp.net. Сам шаблон таблицы уже настроен в представлении (жестко запрограммирован), и я заполняю таблицу с помощью javascript, используя данные json из ajax. Таблица заполняется так, как я хочу, хотя, когда я использую кнопку Datatable Excel, она создает таблицу в Excel, но нет данных, кроме имен столбцов.
Для справки я использую пример на https://datatables.net/extensions/buttons/examples/html5/simple.html
У меня есть все зависимости, указанные в ссылке выше. Я запрограммировал одну строку в таблицу, и это работает, когда я экспортирую таблицу в Excel, но не из динамических данных из моего сценария.
Я пытался поместить код создания кнопки jquery excel в разные части моего скрипта, и это не сработало (как вы увидите в моем коде). Это работает только тогда, когда я жестко закодировал строку в таблице, а не с динамическими данными. создается и кладется в таблицу
<table id="tableReport" class="table table-striped table-hover">
<colgroup>
<col style="width: 7%" />
<col style="width: 7%" />
<col style="width: 7%" />
<col style="width: 7%" />
<col style="width: 7%" />
<col style="width: 7%" />
<col style="width: 7%" />
<col style="width: 7%" />
<col style="width: 7%" />
<col style="width: 7%" />
<col style="width: 7%" />
<col style="width: 7%" />
<col style="width: 7%" />
</colgroup>
<thead>
<tr>
<th>Event Name</th>
<th>Start Date</th>
<th>End Date</th>
<th>Peoplesoft_ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Workday_ID</th>
<th>District Name</th>
<th>District Code</th>
<th>Donation Date</th>
<th>Amount</th>
<th>Recurring Periods</th>
<th>Gift</th>
</tr>
</thead>
<tr>
<td>Easter Event</td>
<td>Hardcoded Test</td>
<td>Hardcoded Test</td>
<td>Hardcoded Test</td>
<td>Hardcoded Test</td>
<td>Hardcoded Test</td>
<td>Hardcoded Test</td>
<td>Hardcoded Test</td>
<td>Hardcoded Test</td>
<td>Hardcoded Test</td>
<td>Hardcoded Test</td>
<td>Hardcoded Test</td>
<td>Hardcoded Test</td>
</tr>
</table>
<script type="text/javascript" language="javascript">
function loadFunction() {
var value_id = $('#myhidden').val();
alert(value_id);
$.ajax({
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
url: '/Admin/ShowEventJSON',
data: '{ value_id:' + JSON.stringify(value_id) + '}',
success: function (data) {
createReport(data)
},
error: function () { alert('ajax request error') }
});
}
//$('#example').DataTable({
// dom: 'Bbfrtip',
// buttons: [
// 'copy'
// ]
//});
//$(document).ready(function () {
// $('#tableReport').DataTable({
// dom: 'Bbfrtip',
// buttons: [
// 'excelHtml5',
// ]
// });
//});
//Function to populate table
function createReport(data) {
var myObj = JSON.parse(data);
var table = document.getElementById("tableReport");
for (var i in myObj) {
var row = document.createElement('tr');
var valuesArray = Object.values(myObj[i]);
for (var v in valuesArray) {
var cell = document.createElement('td');
var cellValue = document.createTextNode(valuesArray[v]);
cell.appendChild(cellValue);
row.appendChild(cell);
}
table.appendChild(row);
}
$(document).ready(function () {
$('#tableReport').DataTable({
dom: 'Bbfrtip',
buttons: [
'excelHtml5',
]
});
});
}
</script>