Problem mit ListView

Eigener Bereich für die Entwickler unter uns! Add-Ins, aber auch andere Programme.
Antworten
sTunTe
Moderator
Beiträge: 3078
Registriert: 9. Jun 2008, 16:25
Wohnort: im nasskalten Norden

Problem mit ListView

Beitrag von sTunTe »

Hallo Community.

Ich schein mal wieder der einzige Depp auf diesem Planeten zu sein, der eine spezielle Funktion/Methode braucht und keinen blassen Dunst hat, wie er das denn nun anstellen könnte.... :x

Als Beispiel nehme ich mal den Taskmanager zur Hand, damit jeder nachvollziehen kann was ich möchte.
Wenn man im Taskmanager auf den Kartenreiter Prozesse klickt, kann man ja bekanntlich die Anzeige ab- bzw. aufsteigend für jede Spalte sortieren.
Nun habe ich mir ein ListView-Item mit zwei Spalten erstellt, die zur Laufzeit dynamisch gefüllt und aktuallsiert werden.
Klickt der User nun auf einen der ColumnHeader um die Anzeige zu sortieren, funktioniert das zwar, allerdings wird die Sortierung beim nächsten Update nicht mehr berücksichtigt.
Ich muß also ermitteln, ob einer der Header zur Sortierung herangezogen wurde, dann das Update durchführen und anschließend die ListView neu sortieren.
Wie finde ich heraus, ob der User einen der ColumnHeader angeklickt hat und welche Sortierung gewählt wurde???

Gruß
sTunTe
sTunTe
Moderator
Beiträge: 3078
Registriert: 9. Jun 2008, 16:25
Wohnort: im nasskalten Norden

Re: Problem mit ListView

Beitrag von sTunTe »

Ok...
Thema hat sich erledigt, da ich grade feststellen musste, dass das ListView-Element ohnehin nicht in der Lage ist Zahlen vernünftig zu sortieren......... :roll:
Schade.
Aber was soll's?!?
Ein Problem weniger.

Gruß
sTunTe
apollo
Foren-Mitglied
Beiträge: 277
Registriert: 19. Okt 2009, 10:40

Re: Problem mit ListView

Beitrag von apollo »

Moin,

mit welcher Entwicklungsumgebung arbeitest Du?
Für Visual C# ist das ganze hier http://support.microsoft.com/kb/319401 gut beschrieben.

Welches Problem hat das LIstview denn beim Sortieren von Zahlen? MIr ist da bisher nix aufgefallen.

Gruß apollo
sTunTe
Moderator
Beiträge: 3078
Registriert: 9. Jun 2008, 16:25
Wohnort: im nasskalten Norden

Re: Problem mit ListView

Beitrag von sTunTe »

Hallo apollo.
apollo hat geschrieben:mit welcher Entwicklungsumgebung arbeitest Du?
VB 2008.
apollo hat geschrieben:Für Visual C# ist das ganze hier http://support.microsoft.com/kb/319401 gut beschrieben.
Ja, kannte ich schon.
Gibt's auch für VB.
Ist für meine Zwecke aber ungeeignet.
apollo hat geschrieben:Welches Problem hat das LIstview denn beim Sortieren von Zahlen? MIr ist da bisher nix aufgefallen.
So ganz verstanden habe ich es auch noch nicht, aber in meinem Fall werden Zahlen anhand der ersten Ziffer sortiert.
Das sieht dann in etwa so aus:
1
10
2
5
55
8
usw...

Ist aber auch nicht weiter schlimm.
Die Sortierung wäre halt noch ein nettes Gimmick gewesen.
Jetzt gibt's halt keine und fertig. ;)
Hab' da noch genug andere Baustellen, die ohnehin Vorrang haben.

Trotzdem Danke.


Gruß
sTunTe
apollo
Foren-Mitglied
Beiträge: 277
Registriert: 19. Okt 2009, 10:40

Re: Problem mit ListView

Beitrag von apollo »

Moin,

ok, typisches Problem wenn Zahlen als String sortiert werden.
Wenn ich mich recht entsinne, kann man einem ListView-SubItem aber keinen Typ explizit mitgeben.


Gruß apollo
sTunTe
Moderator
Beiträge: 3078
Registriert: 9. Jun 2008, 16:25
Wohnort: im nasskalten Norden

Re: Problem mit ListView

Beitrag von sTunTe »

apollo hat geschrieben:ok, typisches Problem wenn Zahlen als String sortiert werden.
Wenn ich mich recht entsinne, kann man einem ListView-SubItem aber keinen Typ explizit mitgeben.
Hehe...
Schlaumeier! ;)
Das die Zahlen (Integer) als Strings sortiert werden ist mir auch aufgefallen.
Die Frage lautet: Warum?!?
Wenn allerdings beim ListView-Subitem der Typ keine Rolle spielt, bzw. ohnehin als String angesehen wird, wäre das die Erklärung.
Wobei dann die Frage immernoch lautet: WARUM?!? :? :cry:

Gruß
sTunTe
Benutzeravatar
Pitti
Foren-Mitglied
Beiträge: 86
Registriert: 15. Mär 2009, 20:45
Wohnort: München Umland
Kontaktdaten:

Re: Problem mit ListView

Beitrag von Pitti »

Misch mich ja nur ungern ein, aber man kann doch einen eigenen Sorter hinterlegen. Also ein eigene Implementierung der Compare Funktion. Löst das nicht das Problem - String zurück in Int und vergleichen - fertig.
Server Acer H340 mit 3x 1TB ST31000333AS + 1x 1TB WD10EACS
Clients 4x Windows XP, 2x Windows 7
Bild
sTunTe
Moderator
Beiträge: 3078
Registriert: 9. Jun 2008, 16:25
Wohnort: im nasskalten Norden

Re: Problem mit ListView

Beitrag von sTunTe »

Hallo Pitti.
Pitti hat geschrieben:Misch mich ja nur ungern ein,
Darfst Du ruhig, ist ja ein Forum und keine Monologplattform. ;)
Pitti hat geschrieben:aber man kann doch einen eigenen Sorter hinterlegen. Also ein eigene Implementierung der Compare Funktion. Löst das nicht das Problem - String zurück in Int und vergleichen - fertig.
Das wäre zwar auch eine Möglichkeit, würde in meinem Fall aber aller Wahrscheinlichkeit nach zuviel Rechenleistung verschlucken.
Wenn ich die Zeit dazu finde, werde ich mir das Ganze nochmal genauer ansehen und eventuell meine Methode zur Befüllung des ListViews ändern.
Ich denke das hier der Hund begraben liegt.

Gruß
sTunTe
bussibaer
Foren-Mitglied
Beiträge: 187
Registriert: 1. Mär 2010, 10:02
Wohnort: Kiel
Kontaktdaten:

Re: Problem mit ListView

Beitrag von bussibaer »

Falls das noch aktuell ist:

Mach doch zwei versteckte Spalten in deiner Listview, und da schreibst du die Zahlen dann halt so rein:

0001
0002
0003
....

Dann sollte das mit dem sortieren hin hauen.
Schönen Gruß aus Kiel
Jörg
http://www.phpbb-professionals.de

Mein Server:
  • CPU: Intel Core i5 760 / 2.8 GHz, Mainboard: Foxconn P55A, Arbeitsspeicher: 2 X RAM DDR3 4096MB
  • Systemfestplatten: System RAID 1 (2x 1TB im Spiegel), WD Caviar Blue WD10EALX - 1 TB
  • Datenplatten: 4 X Samsung HD204UI
  • BS: Windows Server 2008 R2 Foundation.
  • Backup: Acer H340 WHS v1 PP3
[/size]
sTunTe
Moderator
Beiträge: 3078
Registriert: 9. Jun 2008, 16:25
Wohnort: im nasskalten Norden

Re: Problem mit ListView

Beitrag von sTunTe »

Hallo bussibaer.

Um mal beim Beispiel Taskmanager zu bleiben, wären das dann aber schon mindestens 4 Spalten.
1. Spalte: Name (aufsteigend)
2. Spalte: Name (absteigend)
3. Spalte: Wert (aufsteigend)
4. Spalte: Wert (absteigend)

Außerdem macht das Auffüllen mit Nullen die Ansicht nicht grade übersichtlicher.
Besonders dann, wenn es sich um Prozentwerte handelt.

Weiterhin bleibt das Problem bestehen das ich immernoch ermitteln muss welche Sortierung der User ausgewählt hat.

Und zu guter Letzt habe ich hier noch dynamische ListViews, deren Spalten in Abhängigkeit zur Hardware stehen.
z.B. pro Festplatte eine Spalte.

Gruß
sTunTe
bussibaer
Foren-Mitglied
Beiträge: 187
Registriert: 1. Mär 2010, 10:02
Wohnort: Kiel
Kontaktdaten:

Re: Problem mit ListView

Beitrag von bussibaer »

sTunTe hat geschrieben:Hallo bussibaer.

Um mal beim Beispiel Taskmanager zu bleiben, wären das dann aber schon mindestens 4 Spalten.
1. Spalte: Name (aufsteigend)
2. Spalte: Name (absteigend)
3. Spalte: Wert (aufsteigend)
4. Spalte: Wert (absteigend)

Außerdem macht das Auffüllen mit Nullen die Ansicht nicht grade übersichtlicher.
Besonders dann, wenn es sich um Prozentwerte handelt.

Weiterhin bleibt das Problem bestehen das ich immernoch ermitteln muss welche Sortierung der User ausgewählt hat.

Und zu guter Letzt habe ich hier noch dynamische ListViews, deren Spalten in Abhängigkeit zur Hardware stehen.
z.B. pro Festplatte eine Spalte.

Gruß
sTunTe
Hallo sTunTe

Die zusätzlichen Spalten sollst du ja auch nicht anzeigen:

Code: Alles auswählen

        With lsvMain.Columns
            .Add("Id", 0)
            .Add("Mid", 0)
            .Add("AppcPath", 0)
            .Add("Service-Name", 210)
            .Add("", 25)
            .Add("Anzeigename", 400)
            .Add("Art", 25)
            .Add("Status", -2)
        End With
In diesem Beispiel definiere ich die Spalten Id, Mid und AppcPath einfach mit einer weite von 0, dadurch werden Sie nicht in der Listview angezeigt, sind aber trotzdem für Zugriffe aus dem Script vorhanden.

Zum ermitteln der Spalten, glaube ich, kann dir dieser Artikel weiter helfen: Galileo Computing - ListViews

Wenn du Dynamische Spalten hast, musst du das eh im Programm auswerten und dann entsprechend darauf reagieren.
Schönen Gruß aus Kiel
Jörg
http://www.phpbb-professionals.de

Mein Server:
  • CPU: Intel Core i5 760 / 2.8 GHz, Mainboard: Foxconn P55A, Arbeitsspeicher: 2 X RAM DDR3 4096MB
  • Systemfestplatten: System RAID 1 (2x 1TB im Spiegel), WD Caviar Blue WD10EALX - 1 TB
  • Datenplatten: 4 X Samsung HD204UI
  • BS: Windows Server 2008 R2 Foundation.
  • Backup: Acer H340 WHS v1 PP3
[/size]
sTunTe
Moderator
Beiträge: 3078
Registriert: 9. Jun 2008, 16:25
Wohnort: im nasskalten Norden

Re: Problem mit ListView

Beitrag von sTunTe »

Hallo Jörg.

Wie man mit ListViews arbeitet ist mir bekannt. ;)
Die einzige Funktion die mir fehlt, ist das Auswerten der vom User gewählten Sortierung.
Sprich: Auf welchen ColumnHeader wurde geklickt und ist die Sortierung nun auf- oder absteigend.
Mit "Sorting" bzw. "ColumnClick" habe ich schon herumexperimentiert; bin aber zu keinem brauchbaren Ergebnis gekommen.

Im Augenblick kann ich aber auch damit leben, wenn ich als User nicht die Möglichkeit zur Sortierung habe.
Momentan stehen ohnehin wichtigere Funktionen auf meiner ToDo-Liste... ;)

Btw: Das Galilieo Openbook ist mir bekannt und für Einsteiger mit Sicherheit eine große Hilfe.
Leider sind aber auch etliche Fehler darin enthalten. :cry:
Schau Dir alleine mal den Teil zum Thema Datenbankverbindung an. ;)

Gruß
sTunTe
krai
Foren-Einsteiger
Beiträge: 1
Registriert: 7. Dez 2008, 11:54

Re: Problem mit ListView

Beitrag von krai »

Sollte ja kein Problem sein sich schnell selber einen Comparer zu schreiben, dann kannst du die Zahlen auch als solche behandeln.
Antworten