Datagrdiview sortieren - Schönheitsproblem

24/02/2010 - 10:38 von Norbert Schiller | Report spam
Hallo,

habe mich mittlerweile an das Datagridview gewöhnt (das ich früher
unübersichtlich und überladen fand) und fàngt an mir langsam zu gefallen.

Ein optisches Schönheitsproblem:
Habe eine Spalte mit numerischen Werten (also Integer oder Single etc.).
Sortiermodus der Spalte steht auf "Automatisch". Gefüllt wird dabei das Grid
manuell - also ohne Datenbindung.

Damit aber das Sortieren keinen Fehler wirft (Das Objekt muss den Typ Int32
haben) muss ich offensichtlich (oder nicht?) jetzt immer da eine "0" setzen
wo kein Wert vorhanden ist. Kann man dieses "0"-Setzen-Müssen vermeiden?

Beim Initialisieren des Grids:
DGV.Columns(colVerbandsKdNr.Index).ValueType
= GetType(Integer)

und Füllen der Spalte - momentan: (R= DataReader)
-
dim VNr as integer =
nsADO2Int(R("Verbandskundennummer"))
DGV.rows(..).Cells(colVerbandsKdNr.Index).Value = VNr

und gewünscht wàre so was in der Art:

dim VNr as integer =
nsADO2Int(R("Verbandskundennummer"))
if VNr > 0 then
DGV.rows(..).Cells(colVerbandsKdNr.Index).Value =
VNr
else
DGV.rows(..).Cells(colVerbandsKdNr.Index).Value = ""
oder NULL oder ???? also leer.
end if

Irgendjemand eine Idee? Würde das mit dem IComparer (den ich zugegeben
allerdings noch nicht so Recht intus habe) gehen? Danke schon mal.

Gruß, Norbert
nschiller@freenet.de
 

Lesen sie die antworten

#1 Peter Fleischer
25/02/2010 - 01:07 | Warnen spam
"Norbert Schiller" schrieb im Newsbeitrag
news:OP$
...
Habe eine Spalte mit numerischen Werten (also Integer oder Single etc.).
Sortiermodus der Spalte steht auf "Automatisch". Gefüllt wird dabei das
Grid manuell - also ohne Datenbindung.



Hi Norbert,
das ist nicht optimal, da immer nur mit Zeichenketten gearbeitet wird.
Besser ist es gebunden zu arbeiten, um typgerecht zu arbeiten.

Damit aber das Sortieren keinen Fehler wirft (Das Objekt muss den Typ
Int32 haben) muss ich offensichtlich (oder nicht?) jetzt immer da eine "0"
setzen wo kein Wert vorhanden ist. Kann man dieses "0"-Setzen-Müssen
vermeiden?



Die Zellinhalte sind Zeichenketten und die Sortierung wird von links nach
rechts entsprechend der Position der Zeichen in der Zeichentabelle
ausgeführt. Wenn kein Wert vorhanden ist, dann ist das eine Zeichenkette der
Lànge 0 und nach dem Sortieren stehen diese Zeilen vor allen anderen Zeilen
mit Inhalt.

...
Irgendjemand eine Idee? Würde das mit dem IComparer (den ich zugegeben
allerdings noch nicht so Recht intus habe) gehen? Danke schon mal.



Ja, arbeite typgerecht. Lade die Daten in typisierte DAtenobjekte, z.B. in
ein typisiertes DataSet und binde diese Liste mit Datenobjekten. Wenn du für
die Bindung ein BindingSource-Objekt nutzt, dann kannst du über die implizit
erzeugte Sicht typgerecht sortieren und filtern. Der Vorteil dabei ist, dass
die numerischen Inhalte als Zeichenketten dargestellt werden und
Bedienereingaben geprüft und konvertiert werden. Auf diesen Prozess kann man
über die entsprechenden Ereignisse auch noch zusàtzlich einwirken.

Viele Gruesse

Peter

Ähnliche fragen