Avatar billede tommybergquist Nybegynder
28. september 2006 - 12:26 Der er 4 kommentarer

Listviewitem naming

Hej eksperter.

Jeg sidder og roder med listviews, og har nogle forskellige rækker, men lige pludselig finder jeg ud af jeg skal have nogle flere rækker ind, og så skal jeg sidde og holde styr hvilke strings der ligger i de forskellige subitems.


ListViewItem lvi = new ListViewItem();
lvi.Text = Navn;
lvi.SubItems.Add(Adresse);
lvi.SubItems.Add(Postnummer);
lvi.SubItems.Add(telefonnummer);


problemet er når jeg skal teste på en af strengene i mit ListViewItem, så skal jeg vide hvilken position de ligger i.

eks.

// I lvis[i].SubItems[1].Text ligger Postnummer
if (lvis[i].SubItems[1].Text == 7000)
{
  ListView1.Items.Add(lvis[i]);
}

jeg kan se at man på en eller anden måde kan bruge tekst til at afgøre hvilket subitem man vil tilgå sådan at man kan skrive

// I lvis[i].SubItems["Postnummer"].Text ligger Postnummer
if (lvis[i].SubItems["Postnummer"].Text == 7000)
{
  ListView1.Items.Add(lvis[i]);
}

problemet forkommer selvfølgelig først når man begynder at skubbe strenge ind før end den man tester på. Men jeg sidder med 15 subitems, og skal bruge lidt flere nu og hvad nu hvis man ikke skal bruge alle oplysninger og så fjerne nogle subitems så går det hele i kludder, og man skal holde tungen mere end lige i munden.

Håber der er hjælp derude

på forhånd tak

Tommy Bergquist
Avatar billede bulgroz Nybegynder
02. oktober 2006 - 08:26 #1
Hvis jeg har opfattet det korrekt, så er det du ønsker at opnå en liste af kontakter sorteret efter postnummer vist i Details view i ListView med en kolonner for "hvert felt".
Hvis dette er korrekt opfattet, så er løsningen IKKE at iterere sig gemmem alle sine elementer for at finde en korrekt placering for sit nye element. Du skal derimod implementere sortering for dit ListView.

Imidlertid er ListView efterhånden en gammel kontrol, og derfor hvis du ønsker visning i kolonner kan jeg som alternativ anbefale at du anvender DataGridView i stedet.

Opret en "Kontakt" kladde med properties for dine felter.
Opret f.eks. en BindingList af denne klasse.

private BindingList<Kontakt> kontaktListe = new BindingList<Kontakt>();

Og sæt denne liste som værende DataSource på et DataGridView.

Mere skal der ikke til.
Avatar billede bulgroz Nybegynder
02. oktober 2006 - 08:28 #2
Der skulle stå "Kontakt" klasse ;-)
Avatar billede bulgroz Nybegynder
02. oktober 2006 - 09:13 #3
Sludder.Sortering sker ikke automatisk med BindingList. Brug f.eks. et DataTable i stedet.... Sorry :-)
Avatar billede tommybergquist Nybegynder
04. oktober 2006 - 12:19 #4
Hej bulgroz, tak for dit svar og din indsats

Desværre er det ikke sortering jeg efterlyser, men at bruge strenge til at indexere med i stedet for de normale fortløbende tal i subitems

Altså, jeg vil gerne kunne skrive

lvis[i].SubItems["Postnummer"]. i stedet for
lvis[i].SubItems[1].Text

Håber dette giver et klarer syn på mit problem, dette er mit første problem, og jeg har ingen idé om pointsættelse, så er 30 meget lavt sat?

På forhånd tak
Tommy Bergquist
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB