Ankündigung

Einklappen
Keine Ankündigung bisher.

Integer-Werte in der Datapicker-Ergebnisliste ohne 1000er-Trennzeichen

Einklappen
X

Integer-Werte in der Datapicker-Ergebnisliste ohne 1000er-Trennzeichen

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

  • Integer-Werte in der Datapicker-Ergebnisliste ohne 1000er-Trennzeichen

    In der Ergebnisliste eines Datapickers werden Integer-Felder wohl immer mit Tausender-Trennzeichen angezeigt.
    Wir haben einzelne Felder, wo dies nicht erwünscht ist.
    Ich habe bisher aber keine Möglichkeit gefunden, dieses abzuschalten.
    Gibt es da vielleicht doch einen Trick?

  • #2
    Moin Joerg,
    ich hab das gerade mal nachgebaut. Über das XML oder die Einstellungen habe ich keinen Weg gefunden.
    Was theoretisch funktioniert:
    Ein Javascript was über die IDs der Ergebnisse geht und einfach mit replaceAll() den Punkt löscht.
    Ich bin kein Webentwickler und das gibt bestimmt ne bessere Lösung.
    Aber so würde es gehen:

    Ein JS anlegen:
    Code:
    function test_datapicker(){
    setTimeout(() => {
    for (var i = 0; i<10;i++){
    setTextValueById("ID_floatvcontrol80ABDA32__"+i, getTextValueById("ID_floatvcontrol80ABDA32__"+i).toString().replaceAll(".",""));
    }
    
    }, 500);
    
    }
    Das wartet 500ms (damit der Datapicker geladen wurde, könnte man sicher auch direkt auf das Object zugreifen) und geht dann die ersten 10 Ergebnisse durch. Ich zeige halt eh nicht mehr als 10 an.
    ID_floatvcontrol80ABDA32 ist ID wo die Zahl drin steht. In meinem Fall "zahl2", siehe das Bild unten.

    Das JS dann unter dem Datapicker -> Erweitert -> Skript im "ontrigger" hinterlegen.
    So sieht das bei mir aus:

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 2022-03-12 14_21_47-win10_64_INTREXX_CERT - VMware Workstation 16 Player (Non-commercial use only).png
Ansichten: 45
Größe: 3,8 KB
ID: 12381

    Falls du dazu Fragen hast oder ich das nochmal in Ordentlich bauen soll - sag gerne Bescheid!

    Besten Gruß.
    Henning

    Kommentar


    • #3
      Hallo Henning,

      vielen Dank für deine Mühe!
      Der Ansatz ist sehr interessant und hat im Ansatz auch funktioniert. Wie du schreibst: das ist wirklich eine gute Lösung, wenn man immer nur x Treffer anzeigt.
      Den Startindex der Schleife muss man meiner Meinung nach auf 1 ändern und die Abbruchbedingung auf < 11 (ich weiß nicht, ob das ggf. browser- oder versionsabhängig ist).
      Bei mir hat es aber leider nur bedingt funktioniert.
      Sobald unter der Trefferliste eine Datansatz-Navigation existiert, hilft diese Lösung aber nur auf der ersten Seite der Trefferliste.

      Viele Grüße.
      Jörg

      Kommentar


      • #4
        Moin Jörg,
        das stimmt, dann wäre das noch komplizierter.
        Könnte eventuell dieser Workaround funktionieren?

        Du legst für jedes Feld wo keine Tausender-Trennzeichen da sein sollen, ein weiteres Feld an.
        Dieses aber als Textfeld (und damit ohne zwingende Formatierung).
        Beim speichern / ändern des Datensatzes füllst du das zweite Feld per Prozess.
        Du kannst das einfach per Datengruppenaktion machen, aber sollten die Tausender-Punkte verschwinden und aus dem Komma ein Punkt werden. Wenn du noch genauere Formatierung brauchst, einfach ein kleines Groovy-Script die arbeite machen lassen.

        Das Feld zeigst du dann nur in dem Datapicker.
        Könnte das funktionieren?

        Besten Gruß.
        Henning

        Kommentar


        • #5
          ... ja, das hatte ich mir auch schon überlegt. Auf das betreffende Feld wird leider in mehreren Anwendungen zugegriffen.
          Etwas ärgerlich an solchen Konstrukten ist, dass man langfristig oft nicht mehr genau weiß, warum es diese zwei Varianten eigentlich gibt.

          Kommentar


          • #6
            Ich habe den Code mal noch ein Stück erweitert und bin jetzt ganz zufrieden:
            Code:
            /* Versuch, das Tausender-Trennzeichen bei einer Integer-Spalte in der Datapicker-Ergebnisliste zu beseitigen.
            (Aufruf mit ontrigger (am Datapicker)
            * @param sDatapickerResultlistGuid <string> die Guid des Datapickers
            * @param sColumnName <string> der Basisname der zu korrigierenden Tabellenelemente (z.B.: "ID_integervcontrol7F18CC35__")
            */
            function test_datapicker(sDatapickerResultlistGuid, sColumnName) {
            setTimeout(() => {
            var datapicker = document.getElementById("dataPickerTT_"+sDatapicke rResultlistGuid);
            if ( datapicker != null ) {
            // Click-Event auf alle Navigations-Schaltflächen legen
            var pagination = document.getElementById("dataPickerTT_"+sDatapicke rResultlistGuid).getElementsByClassName('paginatio n')[0];
            var buttons = pagination.querySelectorAll('a');
            for (var i = 0; i < buttons.length; i++) {
            buttons[i].addEventListener('click', function() { test_datapicker(sDatapickerResultlistGuid, sColumnName) });
            }
            // Text in der Tabelle für die existierenden Zeilen anpassen
            i = 1
            while ( document.getElementById(sColumnName+i) != null ) {
            setTextValueById(sColumnName+i, getTextValueById(sColumnName+i).toString().replace All(".",""));
            i++;
            }
            }
            }, 300);
            return true;
            }
            Die Anzahl der angezeigten Treffer ist jetzt variabel, die Navigation wird mit berücksichtigt und der Code ist durch die Parameter wiederverwendbar.

            Vielen Dank noch mal an Henning!

            Kommentar

            Lädt...
            X