Ankündigung

Einklappen
Keine Ankündigung bisher.

ID´s sortieren mittels DataTable-Script

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ID´s sortieren mittels DataTable-Script

    Hallo zusammen,

    in einer Web-Anweisung benutze ich die Bibliothek 'DataTable' um eine Tabelle zu sortieren.
    In der ersten Spalte meiner Tabelle habe ich eine ID und drei weitere Input-Felder (in Div-
    Elemente) eingebunden - siehe Screenshot.

    img_016.jpg

    Wenn ich jetzt aufsteigend nach dieser Spalte sortieren möchte,
    wird wie in diesem Beispiel nach dem Inhalt aus dem Feld 'Prio' sortiert.
    Packe ich die entsprechende ID an erster Stelle in dieser Spalte, wird
    wie folgt sortiert:

    1, 10, 11, 12, 2, 3, 4, 5, 6, 7, 8, 9 (statt: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).
    Wenn ich die ID als Integer validiere, das gleiche Problem mit der Sortierung.
    Gibt es eine andere Möglichkeit, um mein Vorhaben (Sortierung) zu realisieren?

    VG, David

  • #2
    Da werden deine IDs als Strings interpretiert. Wahrscheinlich reicht es, onchange das entsprechende data-Attribut zu setzen.

    Kommentar


    • #3
      Das elende Problem mit der deutschen Sortierung habe ich seinerzeit wie folgt gelöst:

      Code:
      function kaminbausatzSort(a, b){
             function kaminbausatzSplit(fstring){
                var mapObj = {
                      ä:"ae",
                      ö:"oe",
                  ü:"ue",
                  Ä:"ÄE:",
                  Ö:"ÖE",
                  Ü:"UE:",
                  ß:"ss "
                  };
                fstring = fstring.replace(/ä|ö|ü|Ä|ö|ü|ß/gi, function(matched){
                             return mapObj[matched];
                        });
                return fstring.toUpperCase().replace(/\d*/g, function (x) {
                  return !x=="" ? '0'.repeat(20).substr(0,20-x.length)+x:'';});
             }
             a=kaminbausatzSplit(a["name"]);    
             b=kaminbausatzSplit(b["name"]);    
             return (a>b)+(a<b)*-1;
          }
          var data = [
             {name : "5.1. Test 3"},
             {name : "5.1. Test 1"},
             {name : "5.2. Test 2"},
             {name : "5.10. Test 10"},
             {name : "5.12. Test 12"},
             {name : "Karl"},
             {name : "Kader"},
             {name : "Käse"},
             {name : "Kuchen"}
      
             ];
             console.log("kaminbausatzSort");
             data.sort(kaminbausatzSort);
             for (var i = 0; i < data.length; i++){
                console.log(data[i]["name"]);
             }

      Kommentar


      • #4
        Ich habe jetzt den jQuery-Code folgendermaßen angepasst:
        Code:
        $(document).ready( function () 
        { 
            $('#table_id').dataTable( 
                { "columnDefs": [ { "type": "numeric", targets: 0 } ] } 
            ); 
        });
        Jetzt wird zwar besser sortiert, allerdings wie folgt:

        8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7

        aber nicht von 1 bis 12 bzw. 12 bis 1.
        Kann sich das jemand erklären, bei dem Code?

        Kommentar


        • #5
          Dann bau doch einen fiddle, damit man den Quellcode sieht...

          Kommentar


          • #6
            Du hast keine numerischen Werte also kannst Du auch nicht numerisch sortieren! Machs doch z.B. so das Du meinetwegen einen numerischen Wert assozierst und nach dem sortierst. z.B: https://jsfiddle.net/1s87fzxu/

            Aber mit PHP hat das ganze nichts zu tun. Die gruppe bitte sorgfältiger wählen!

            Kommentar

            Lädt...
            X