我设置了一个Datatable(jquery)表,我很好地返回了数据。基本过滤器正常工作。 我有一个日期列,我需要制作一个有两个日期边界的过滤器。 我从这个满足我需求的例子中汲取灵感jsfiddle.net/evcfespn/26 /
基于 stackoverflow.com/questions/33702675/datatable-filtering-by-date-range-not-returning-correct-results
但是一旦实施,我遇到了一个相当奇怪的问题。 当我选择像(01-01-2017到10-01-2017)这样的范围时,我得到了正确的结果。 但是当我选择(01-01-2017至17-01-2017)时,我得到零结果。这很奇怪。
<script src="~/Scripts/DataTables/jquery.dataTables.min.js"></script>
<script src="~/Scripts/moment.min.js"></script>
<script src="~/Scripts/daterangepicker.js"></script>
<link href="~/Content/daterangepicker.css" rel="stylesheet" />
<div class="row">
<div class="col-md-12">
<div class="panel panel-primary list-panel" id="list-panel">
<div class="panel-heading list-panel-heading">
<h1 class="panel-title list-panel-title">Liste des OT</h1>
</div>
<div class="panel-body">
<table id="assets-data-table"
class="table table-striped table-bordered"
style="width:100%">
<thead>
<tr>
<th>Numero</th>
<th>Nom</th>
<th>Reference</th>
<th>Nature</th>
<th>Date</th>
<th>Type</th>
<th>Niveau</th>
</tr>
</thead>
<tbody>
@foreach (var asset in Model)
{
<tr>
<td>@asset.Num</td>
<td>@asset.Nom_et_Prenom_Client</td>
<td>@asset.Reference_Client</td>
<td>@asset.Nom_Nature</td>
<td>@asset.Date.ToString().Substring(1,10)</td>
<td>@asset.Code_intervention</td>
<td>@asset.Etat</td>
</tr>
}
</tbody>
</table>
</div>
</div>
</div>
</div>
$(document).ready(function () {
var table = $('#assets-data-table').DataTable({
"dom": '<"toolbar">frtip'
});
$("div.toolbar").html('<input id="date_range" type="text">');
// Date range script - Start of the script
$("#date_range").daterangepicker({
autoUpdateInput: false,
locale: {
"cancelLabel": "Vider",
}
});
$("#date_range").on('apply.daterangepicker', function (ev, picker) {
$(this).val(picker.startDate.format('DD-MM-YYYY') + ' au ' + picker.endDate.format('DD-MM-YYYY'));
table.draw();
});
$("#date_range").on('cancel.daterangepicker', function (ev, picker) {
$(this).val('');
table.draw();
});
// Date range script - END of the script
$.fn.dataTableExt.afnFiltering.push(
function( oSettings, aData, iDataIndex ) {
var grab_daterange = $("#date_range").val();
var give_results_daterange = grab_daterange.split(" au ");
var filterstart = give_results_daterange[0];
var filterend = give_results_daterange[1];
var iStartDateCol = 4;
var iEndDateCol = 4;
var tabledatestart = aData[iStartDateCol];
var tabledateend= aData[iEndDateCol];
if (!filterstart && !filterend) {
return true;
}
else if ((moment(filterstart).isSame(tabledatestart) || moment(filterstart).isBefore(tabledatestart)) && filterend === "") {
return true;
}
else if ((moment(filterstart).isSame(tabledatestart) || moment(filterstart).isAfter(tabledatestart)) && filterstart === "") {
return true;
}
else if ((moment(filterstart).isSame(tabledatestart) || moment(filterstart).isBefore(tabledatestart)) && (moment(filterend).isSame(tabledateend) || moment(filterend).isAfter(tabledateend))) {
return true;
}
return false;
}
);
});
哪里可能有问题? 感谢您的帮助。