2017-05-24 1 views
0

Standart Table footable. Beaucoup de colonnes Comment garder le même ordre numérique après le tri?Garder le même ordre numérique après le tri (Footable)

Original:

id | Book  | Views 
--------------------- 
1 | Book 1 | 3493 
2 | Book 2 | 3792 
3 | Book 3 | 4022 

Après le tri par Vues (Asc):

id | Book  | Views 
--------------------- 
3 | Book 3 | 4022 
2 | Book 2 | 3792 
1 | Book 1 | 3493 

Mais je dois ceci:

id | Book  | Views 
--------------------- 
1 | Book 3 | 4022 
2 | Book 2 | 3792 
3 | Book 1 | 3493 

L'objectif est que ID doit toujours être 1, 2,3 après le tri (mais pas après le paging, bien sûr)

+0

Donc, c'est un numéro de ligne et pas un ID, alors. – James

Répondre

0

Je crois que vous devez séparer votre vue de vos données un peu plus. Je vais illustrer en utilisant Arrays.

Disons que nous avons un tableau de arr de 3 objets, contenant nos livres. Sont tous les deux itérés sur les mêmes données, mais seulement test s'affiche dans le manoir que vous souhaitez. En effet, au lieu d'utiliser les données ID pour l'affichage, il utilise l'index d'itération. J'espère que cela peut vous pousser dans la bonne direction.

var arr = [{ 
 
    id: 1, 
 
    name: "Book 1", 
 
    views: 100 
 
}, 
 
{ 
 
    id: 2, 
 
    name: "Book 2", 
 
    views: 200 
 
}, 
 
{ 
 
    id: 3, 
 
    name: "Book 3", 
 
    views: 300 
 
}]; 
 

 
function compare(a,b){ 
 
    if(a.views > b.views) 
 
    return -1; 
 
    if(b.views > a.views) 
 
    return 1; 
 
    return 0; 
 
} 
 

 
arr.sort(compare); 
 

 
for(var i=0; i<arr.length; i++){ 
 
    var elem = document.createElement("div"); 
 
    elem.innerHTML = "id:"+(i+1) + " "; 
 
    elem.innerHTML += "Name: "+arr[i].name + " "; 
 
    elem.innerHTML += "Views: "+arr[i].views; 
 
    console.log(arr[i].id); 
 
    document.getElementById("test").appendChild(elem); 
 
} 
 

 
for(var i=0; i<arr.length; i++){ 
 
    var elem = document.createElement("div"); 
 
    elem.innerHTML = "id:"+arr[i].id + " "; 
 
    elem.innerHTML += "Name: "+arr[i].name + " "; 
 
    elem.innerHTML += "Views: "+arr[i].views; 
 
    console.log(arr[i].id); 
 
    document.getElementById("test2").appendChild(elem); 
 
}
<div id="test"></div> 
 
<div id="test2"></div>

0

Si tout ce que vous essayez de faire est d'avoir chaque ligne numérotée de manière séquentielle, .each() jQuery fournit une variable d'itération (le i dans le function(i)). L'affichage des lignes est i+1 car, comme la plupart des éléments javascript, each() est basé sur 0.

$("#mytable tbody tr").each(function(i){ 
    $(this).find("td:first").text(i+1); 
}); 
+0

** De la file d'attente **: Puis-je vous demander d'ajouter un peu de contexte autour de votre code source. Les réponses au code seulement sont difficiles à comprendre. Cela aidera le demandeur et les futurs lecteurs à la fois si vous pouvez ajouter plus d'informations dans votre message. – RBT