Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C#.NET] Ophalen index-waarde van een listview

Pagina: 1
Acties:

  • the_scientist
  • Registratie: November 2004
  • Laatst online: 15-11-2023
Hi all,

Ik heb een listview in mijn form, die wordt gevuld met gegevens uit de database. Bij deze gegevens hoort ook een ID, die niet te zien mag zijn in de listview, maar die wel nodig is om de aanvullende gegevens van de selectie in de overige labels te tonen. Om dit op te lossen, wordt de ID bij het ophalen van de gegevens uit de database weggeschreven in een dictionary. Ook loopt er een tellertje mee, beginnend vanaf 0, zodat deze overeenkomen met de indexwaardes van de listview.

Dat werkt allemaal prima. Nu is het probleem dat er, bij het klikken op een item in de listview, wordt gekeken welke indexwaarde het item heeft. Dit moet vergeleken worden met de dictionary, en zodoende moet de ID aangeroepen worden die wordt gebruikt om de gegevens te vullen.

Iemand een idee hoe dit opgelost moet worden?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
the_scientist schreef op woensdag 21 november 2007 @ 15:03:
Om dit op te lossen, wordt de ID bij het ophalen van de gegevens uit de database weggeschreven in een dictionary.
Waarom knal je de ID niet in de Tag property van de listviewitem? Of waarom maak je geen afgeleide klasse van een listviewitem met een ID property?
the_scientist schreef op woensdag 21 november 2007 @ 15:03:
Ook loopt er een tellertje mee, beginnend vanaf 0, zodat deze overeenkomen met de indexwaardes van de listview.

Dat werkt allemaal prima. Nu is het probleem dat er, bij het klikken op een item in de listview, wordt gekeken welke indexwaarde het item heeft.
Daar is de .selectedItems collectie toch voor? Veel handiger om doorheen te itereren (bij multi-select) en anders (bij single-select) zit er altijd maar 1 in.
the_scientist schreef op woensdag 21 november 2007 @ 15:03:
Iemand een idee hoe dit opgelost moet worden?
Niet met de dictionary ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
RobIII schreef op woensdag 21 november 2007 @ 15:07:
[...]

Waarom knal je de ID niet in de Tag property van de listviewitem? Of waarom maak je geen afgeleide klasse van een listviewitem met een ID property?
Het ligt er een beetje aan hoe je applicatie werkt, ik stop vaak ook een refference van het object in de Tag property, dat kan eventueel handiger zijn als een ID.
Daar is de .selectedItems collectie toch voor? Veel handiger om doorheen te itereren (bij multi-select) en anders (bij single-select) zit er altijd maar 1 in.
En als het echt alleen om de index gaat heb je ook nog SelectedIndices

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • the_scientist
  • Registratie: November 2004
  • Laatst online: 15-11-2023
Die manier van Roblll klinkt ook een stuk logischer dan de manier van de dictionairy. Thanks!

Zit alleen nog met een klein probleempje, da's dit:

//Hier wordt de ID in de tag geschopt
lvi.Tag = BSMediator.tanksiterator.ID;

//Hier wordt de ID weer opgevraagd
int tii = lvi.Tag;

Geeft alleen nog de error dat er geen impliciete conversie plaats kan vinden van het Tag-object naar een Int. Heb het geprobeerd met:
lvi.Tag = (int)BSMediator.tanksiterator.ID;
en
int tii = int.Parse(lvi.Tag);

maar mocht beiden niet baten. Iemand nog een klein tippie zodat ook dit stuk afgemaakt kan worden? :)

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
C#:
1
2
3
listViewItem.Tag = 1;

int i = (int)listViewItem.Tag;

Werkt anders gewoon goed hoor. Mischien moet je voordat je cast even controleren of er wel echt een int in de Tag zit.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • the_scientist
  • Registratie: November 2004
  • Laatst online: 15-11-2023
Nu werkt ie wel, waarschijnlijk een tikfoutje ofzo... Loopt duidelijk tegen 5 uur aan O-)

Thanks voor het snelle antwoord!

  • __fred__
  • Registratie: November 2001
  • Laatst online: 29-11 20:34
Databinding anyone?

http://msdn2.microsoft.com/en-us/library/ef2xyb33.aspx

of

http://msdn2.microsoft.com/en-us/library/6759sth4.aspx

[ Voor 29% gewijzigd door __fred__ op 22-11-2007 14:59 . Reden: web toegevoegd ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik ben nooit zo'n fan geweest van Databinding in Windows Forms, al kan dat er aan liggen dat ik me er niet echt in heb verdiept.

In WPF zit het datbinding gebeuren wel super mooi verwerkt

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1