【发布时间】:2016-05-22 13:30:57
【问题描述】:
我正在尝试在模式中创建一个完全动态的数据表打开。起初它给了我正确的结果,但是当我打开一个新的模式时,它给了我这个错误:
DataTables 警告:table id=tableDetails - 无法重新初始化 DataTable。有关此错误的更多信息,请参阅http://datatables.net/tn/3
希望您能提供帮助。谢谢。
这是我正在使用的代码: [模态]:
<div id="myModal" class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="modalTitle"></h4>
</div>
<div class="modal-body">
<table class="table table-hover table-bordered" id="tableDetails"></table>
</div>
</div>
</div>
[数据表]
$.getJSON( "controller/kpi.php", {
abrArq: abreviatesArq,
idKpi: idKpi
}, function(detailsKpi){
var detailsHeader = "";
var detailsBody = "";
//Validar 'thead'
if(detailsKpi["tableH"])
{
$("#tableDetails").append('<thead id="detailsHeader"></thead>');
}
$("#tableDetails").append('<tbody id="detailsBody"></tbody>');
//Validar 'tbody'
if(detailsKpi["tableB"])
{
$("#tableDetails").append('<tbody id="detailsBody"></tbody>');
//Header Tabela
detailsHeader += "<tr>";
$.each(detailsKpi["tableH"], function(dkHind, dkHobj){
var string = dkHobj.toUpperCase();
detailsHeader += "<th>";
detailsHeader += string;
detailsHeader += "</th>";
});
detailsHeader += "</tr>";
//Body Tabela
$.each(detailsKpi["tableB"], function(dkBind, dkBobj)
{
detailsBody += '<tr>';
$.each(detailsKpi["tableH"], function(dkHindex, dkHobjecto)
{
detailsBody += '<td>';
detailsBody += dkBobj[dkHobjecto];
detailsBody += '</td>';
});
detailsBody += '</tr>';
});
}
//Se não existerem resultados apresenta mensagem
//'Não foram encontrados resultados'
else
{
detailsBody = "<div class='noResults'>Não foram encontrados resultados</div>";
$("#tableDetails").removeClass("table-bordered");
}
//Anexar Informação na tabela
$("#detailsHeader").append(detailsHeader);
$("#detailsBody").append(detailsBody);
//Chamar DataTable
$('#tableDetails').DataTable({
//Número de registos a mostrar por página
"aLengthMenu": [
[10, 50, -1],
[10, 50, "Tudo"]
],
//Textos usados nas datatables
"oLanguage": {
"sSearch": "Pesquisar:",
"sLengthMenu": "Mostra _MENU_ por página",
"sInfoEmpty": "Nenhum registro encontrado",
"sInfo": "Total de _TOTAL_ registos para mostrar (_START_ a _END_)",
"sEmptyTable": "Sem dados disponíveis na tabela",
"sInfoFiltered": " - filtrado de _MAX_ registos",
"sZeroRecords": "Não foram encontrados nenhuns registos",
"oPaginate": {
"sFirst": "Primeira Página",
"sLast": "Última Página",
"sNext": "Seguinte",
"sPrevious": "Anterior"
}
},
});
});
//Limpar Modal #1
$("#detailsHeader").text("");
$("#detailsBody").text("");
[查询]
$this->cleanErrors();
$this->sql->cleanErrors();
$table = $param["abrArq"].'_kpi'.$param["idKpi"].'_detail';
//SELECT COLUMNS
$columns = "SHOW COLUMNS FROM " . $table;
$this->sql->query($columns);
$detCol = array();
while($cRow = $this->sql->fetchRow())
{
$detCol[] = $table.'.'.$cRow["Field"];
};
$listCol = implode(", ", $detCol);
//SELECT RESULTS
$query="SELECT ".
$listCol."
FROM ".
$table;
$this->sql->query($query);
//echo $query;
if($this->sql->hasErrors())
{
$this->errors = $this->errors + $this->sql->errors;
return false;
}
while($row = $this->sql->fetchRow())
{
$res[] = $row;
}
if($this->sql->hasErrors())
{
$this->errors = $this->errors + $this->sql->errors;
return false;
}
return $res;
【问题讨论】:
-
js代码是我在帖子中添加的[DataTable]代码
-
您可以稍后在代码中重新初始化表格吗?
-
你能帮我做吗?我添加了“销毁”选项“bDestroy”:true。现在它会读取,但是在我打开模态后第二秒它会丢失 DataTable 分页、搜索等。