J'utilise ce plugin de table Bootstrap. Mais le tri par date ne fonctionne pas correctement.

Voici le code:

<table class=" table-striped" id="table" data-toggle="table"
    data-search="true"
    data-filter-control="true"
    data-click-to-select="true"
    data-escape="false">

    <thead>
        <tr>
            <th data-field="expiry_date" data-sortable="true" scope="col"><?= 'expiry date' ?></th>
        </tr>
    </thead>

La date est au format suivant : d/m/y (17/7/14)

Comment puis-je le corriger afin de trier correctement les dates?

4
netdev 14 mars 2019 à 17:45

3 réponses

Meilleure réponse

Vous devez utiliser un trieur personnalisé avec l'attribut "data-sorter" comme data-sorter="datesSorter"

Ensuite pour s'adapter à vos besoins :

function datesSorter(a, b) {
  if (new Date(a) < new Date(b)) return 1;
  if (new Date(a) > new Date(b)) return -1;
  return 0;
}
5
PHPnoob 14 mars 2019 à 15:19

Je l'ai fait fonctionner comme ça .... J'ai ajouté une nouvelle colonne (numérique) et l'ai définie sur masqué. Vous pouvez le faire facilement en convertissant cette date en nombre.

$('#mainTable').bootstrapTable({
    sortStable: true,
    pagination: true,
    pageSize: 100,
    toolbar:"#toolbar",
    search: true,
    searchOnEnterKey: false,
    sortOrder: "desc",sortOrder: "desc",

    // here we determine the column that will sort the table
    sortName: "rel0",
    columns: [
        {
            // this is the hidden numeric column that works as sorter 
            field: 'rel0',
            title: 'rel0',                  
            visible:false,                             
        },
        {
            // this is the visible column
            field: 'rel',
            title: 'Date / hour',
        },
    ],
    data: objetoData
});
0
ggorlen 1 déc. 2020 à 06:03

Vous devez utiliser une trieuse personnalisée avec l'attribut "data-sorter" comme data-sorter="datesSorter".

Ensuite pour répondre à vos besoins :

function datesSorter(a, b) {
    return Date.parse(a) - Date.parse(b);
}
0
Evgeniy Evteev 16 déc. 2020 à 18:08