数据表返回有时没有结果

时间:2017-02-27 19:19:46

标签: javascript jquery filter datatables daterangepicker

我设置了一个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;
            }
    );
        });

哪里可能有问题? 感谢您的帮助。

enter image description here

0 个答案:

没有答案