Estou tentando trabalhar com Datatable JS da jQuery para o meu projeto a partir deste link.
Baixei a biblioteca completa da mesma fonte. Todos os exemplos fornecidos no pacote parecem funcionar bem, mas quando tento incorporá-los no meu WebForms
, o CSS, JS não funcionam de forma alguma.
Aqui está o que eu fiz:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="css/jquery.dataTables.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<table id="myTable" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</tfoot>
<tbody>
<!-- table body -->
</tbody>
</table>
</div>
<script src="js/jquery.dataTables.js" type="text/javascript"></script>
<script src="js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#myTable').DataTable();
});
</script>
</form>
</body>
</html>
Minha estrutura de arquivo para JS e CSS em minha solução é a seguinte:
Eu adicionei todas as referências JS e CSS necessárias, conforme mostrado no manual. Ainda assim, a renderização não é a esperada. Não há CSS e nem mesmo o JS funciona.
Também recebo os seguintes erros no console:
ReferenceError: jQuery is not defined
TypeError: $(...).DataTable is not a function
Eu ainda não limitei nenhum dado dinâmico aqui (como dentro de um repetidor ou algo assim) ainda não está funcionando.
Alguém pode me orientar na direção certa para este problema?
fonte
Respostas:
CAUSA
Pode haver vários motivos para esse erro.
SOLUÇÃO
Incluir apenas uma versão da biblioteca jQuery versão 1.7 ou mais recente antes jQuery DataTables.
Por exemplo:
<script src="js/jquery.min.js" type="text/javascript"></script> <script src="js/jquery.dataTables.min.js" type="text/javascript"></script>
Consulte jQuery DataTables: Erros comuns do console JavaScript para obter mais informações sobre este e outros erros comuns do console.
fonte
Isso funcionou para mim. Mas certifique-se de carregar o jquery.js antes do arquivo dataTable.js preferido. Felicidades!
<script type="text/javascript" src="~/Scripts/jquery.js"></script> <script type="text/javascript" src="~/Scripts/data-table/jquery.dataTables.js"></script> <script>$(document).ready(function () { $.noConflict(); var table = $('# your selector').DataTable(); });</script>
fonte
Recebi este erro porque descobri que referenciei jQuery duas vezes.
A primeira vez: na página mestra (
_Layout.cshtml
) na ASP.NET MVC, e depois novamente em uma página atual, então comentei a página mestra.Se você estiver usando ASP.NET MVC, este trecho pode ajudá-lo
@*@Scripts.Render("~/bundles/jquery")*@//comment this line @Scripts.Render("~/bundles/bootstrap") @RenderSection("scripts", required: false)
e na página atual eu adicionei essas linhas
<script src="~/scripts/jquery-1.10.2.js"></script> <!-- #region datatables files --> <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css" /> <script src="//cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script> <!-- #endregion -->
Espero que isso ajude você, mesmo que não use ASP.NET MVC
fonte
se por algum motivo duas versões do jQuery forem carregadas (o que não é recomendado), chamar a
$.noConflict(true)
partir da segunda versão retornará as variáveis jQuery com escopo global para as da primeira versão.Às vezes, pode ser um problema com a versão mais antiga (ou não estável) de arquivos JQuery
Uso da solução
$.noConflict();
<script src="js/jquery.js" type="text/javascript"></script> <script src="js/jquery.dataTables.js" type="text/javascript"></script> <script> $.noConflict(); jQuery( document ).ready(function( $ ) { $('#myTable').DataTable(); }); // Code that uses other library's $ can follow here. </script>
fonte
Aqui está o conjunto completo de JS e CSS necessário para o plug-in da tabela de exportação funcionar perfeitamente.
Espero que economize seu tempo
<!--Import jQuery before export.js--> <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script> <!--Data Table--> <script type="text/javascript" src=" https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script> <script type="text/javascript" src=" https://cdn.datatables.net/buttons/1.2.4/js/dataTables.buttons.min.js"></script> <!--Export table buttons--> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jszip/2.5.0/jszip.min.js"></script> <script type="text/javascript" src="https://cdn.rawgit.com/bpampuch/pdfmake/0.1.24/build/pdfmake.min.js" ></script> <script type="text/javascript" src="https://cdn.rawgit.com/bpampuch/pdfmake/0.1.24/build/vfs_fonts.js"></script> <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.2.4/js/buttons.html5.min.js"></script> <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.2.1/js/buttons.print.min.js"></script> <!--Export table button CSS--> <link rel="stylesheet" href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css"> <link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.2.4/css/buttons.dataTables.min.css">
javascript para adicionar botões de exportação na tabela com id =
tbl
$('#tbl').DataTable({ dom: 'Bfrtip', buttons: [ 'copy', 'csv', 'excel', 'pdf', 'print' ] });
Resultado: -
fonte
Pode haver dois motivos para esse erro:
Primeiro
Você está se hospedando
jQuery.DataTables.js
antesjquery.js
para que: -Você precisa carregar
jQuery.js
antes de carregarjQuery.DataTables.js
Segundo
Você está usando duas versões de
jQuery.js
na mesma página para que: -Tente usar a versão superior e certifique-se de que ambos os links tenham a mesma versão do
jQuery
fonte
Honestamente, isso levou horas para consertar isso. Por fim, apenas uma coisa funcionou na reconfirmação da solução fornecida pelo "Basheer AL-MOMANI". Que é apenas colocar declaração
@RenderSection("scripts", required: false)
dentro do
_Layout.cshtml
arquivo após todos os<script></script>
elementos e também comentando o script jquery no mesmo arquivo. Em segundo lugar, eu tive que adicionardentro da chamada de função jquery em outro arquivo * .cshtml como:
$(document).readyfunction () { $.noConflict(); $("#example1").DataTable(); $('#example2').DataTable({ "paging": true, "lengthChange": false, "searching": false, "ordering": true, "info": true, "autoWidth": false, }); });
fonte
Também encontrei este erro. Por alguma razão, eu originalmente codifiquei
var table = $('#myTable').DataTable({ "paging": false, "order": [[ 4, "asc" ]] });
Isso não geraria o erro às vezes e outras vezes sim. Alterando o código para
$('#myTable').DataTable({ "paging": false, "order": [[ 4, "asc" ]] });
O erro parece ter parado
fonte
Eu sei que sua compra atrasada pode ajudar alguém
Isso também pode acontecer se você não adicionar
$('#myTable').DataTable();
dentro dodocument.ready
Então, ao invés disso
$('#myTable').DataTable();
Tente isto
$(document).ready(function() { $('#myTable').DataTable(); });
fonte
No meu caso, a solução foi excluir os cookies do navegador.
fonte
// you can get the Jquery's librairies online with adding those two rows in your page <script type="text/javascript" src=" https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script> <link rel="stylesheet" href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css">
fonte
Tendo o mesmo problema no Flask, eu já tinha um template que carregava JQuery, Popper e Bootstrap. Eu estava estendendo esse modelo para outro modelo que estava usando como base para carregar a página que tinha a tabela.
Por algum motivo, no Flask, aparentemente, os arquivos no modelo externo são carregados antes dos arquivos nas tabelas acima na hierarquia (aqueles que você está estendendo), portanto, o JQuery estava carregando antes dos arquivos DataTables que estavam causando o problema.
Tive que criar outro modelo onde executava todas as minhas importações de JS CDNs no mesmo lugar, o que resolveu o problema.
fonte