Skip to content

Commit 0800e59

Browse files
committed
Datatables.cshtml wait for jquery load
allows jQuery script tag to be placed after the Datatables.cshtm, as when using a layout template.
1 parent 62b6ac8 commit 0800e59

File tree

1 file changed

+34
-28
lines changed

1 file changed

+34
-28
lines changed

Mvc.JQuery.Datatables.Templates/Views/Shared/DataTable.cshtml

+34-28
Original file line numberDiff line numberDiff line change
@@ -30,35 +30,41 @@
3030
</tbody>
3131
</table>
3232
<script type="text/javascript">
33-
$(document).ready(function() {
34-
var $table = $('#@Model.Id');
35-
var dt = $table.dataTable({
36-
"bProcessing": true,
37-
"bStateSave": true,
38-
"bServerSide": true,
39-
"bFilter": @Model.ShowSearch.ToString().ToLower(),
40-
"sDom": '@Html.Raw(Model.Dom)',
41-
"aLengthMenu": [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]],
42-
"bAutoWidth": @Model.AutoWidth.ToString().ToLowerInvariant(),
43-
"sAjaxSource": "@Html.Raw(Model.AjaxUrl)", @Html.Raw(Model.TableTools ? "\"oTableTools\" : { \"sSwfPath\": \"/content/DataTables/extras/TableTools/media/swf/copy_csv_xls_pdf.swf\" }," : "")
44-
"fnServerData": function(sSource, aoData, fnCallback) {
45-
$.ajax({
46-
"dataType": 'json',
47-
"type": "POST",
48-
"url": sSource,
49-
"data": aoData,
50-
"success": fnCallback
33+
(function setDataTable() {
34+
if(!window.jQuery) {
35+
setTimeout(setDataTable, 0);
36+
return;
37+
}
38+
$(document).ready(function() {
39+
var $table = $('#@Model.Id');
40+
var dt = $table.dataTable({
41+
"bProcessing": true,
42+
"bStateSave": true,
43+
"bServerSide": true,
44+
"bFilter": @Model.ShowSearch.ToString().ToLower(),
45+
"sDom": '@Html.Raw(Model.Dom)',
46+
"aLengthMenu": [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]],
47+
"bAutoWidth": @Model.AutoWidth.ToString().ToLowerInvariant(),
48+
"sAjaxSource": "@Html.Raw(Model.AjaxUrl)", @Html.Raw(Model.TableTools ? "\"oTableTools\" : { \"sSwfPath\": \"/content/DataTables/extras/TableTools/media/swf/copy_csv_xls_pdf.swf\" }," : "")
49+
"fnServerData": function(sSource, aoData, fnCallback) {
50+
$.ajax({
51+
"dataType": 'json',
52+
"type": "POST",
53+
"url": sSource,
54+
"data": aoData,
55+
"success": fnCallback
56+
});
57+
}
58+
});
59+
@if (Model.ColumnFilter)
60+
{
61+
<text>
62+
dt.columnFilter({
63+
sPlaceHolder: "head:before",
64+
aoColumns: [@Html.Raw(Model.ColumnFiltersString)]
5165
});
66+
</text>
5267
}
5368
});
54-
@if (Model.ColumnFilter)
55-
{
56-
<text>
57-
dt.columnFilter({
58-
sPlaceHolder: "head:before",
59-
aoColumns: [@Html.Raw(Model.ColumnFiltersString)]
60-
});
61-
</text>
62-
}
63-
});
69+
})();
6470
</script>

0 commit comments

Comments
 (0)