18. december 2008 - 11:25Der er
10 kommentarer og 1 løsning
Tabelvisning af array
Hej eksperter,
Jeg er ikke så hård i Visual Studios grænseflader... Jeg står med et problem, som jeg ikke rigtig kan se løsningen på. Jeg skal bruge en listbox, som præsenterer en række data, og som ved klik på linjen kan affyre en event med rækkens indhold som parameter.
Men... indholdet i listen skal være en arraylist/list af objekter, så jeg vil gerne have det præsenteret som en tabel, men hvor jeg stadig kan klikke på linjerne så der sker en event. Hvordan klarer jeg det??
Download DLL filen fra websiden jeg refererer til i min tidligere kommentar. Fra Visual Studio højreklikker du på toolboxen, og trykker "Choose Items..." Trykk "Browse...", og find dll filen du downloadede, trykk OK ud af dialogboksene. Nu skulle du gerne have fået et par nye komponenter i toolboxen. Træk og slip en ObjectListView ind på din form. Sørg for at den nye objectListView er selected. Fra Properties vinduet, sætter du FullRowSelect til "true". Fra Properties vinduet finder du "Columns" propertien, vælg den og tryk på den lille "..." knap. Nu åbnes en dialogboks. Her skal du tilføje de kolonner som skal vises i ListView'en. For hver kolonne skal "AspectName" sættes til navnet på din property i objekterne, som skal sættes ind i den givne kolonne. "Text" sættes til teksten der skal ses i kolonne-headeren. Når dette er gjort, mangler du bare at fylde den med objekter. Fra din kode skriver du eksempeltvis: this.objectListView1.Objects = myArrayList;
Jeg har en række variabler, som kommer ind fra en webservice. Det fungerer ganske fint, men jeg har et datetime felt, som jeg gerne vil have repræsenteret i listen som en shortdate. - altså så tiden forsvinder.
Kan det lade sig gøre?? Ved ikke rigtig hvordan jeg kan manipulere de data der kommer ind.
Undskyld det sene svar, men jeg har ikke haft tændt en computer hele julen.
Først bør du give kolonnen et fornuftigt navn. Det gøres under Columns propertien (samme sted du sætter AspectName og Text). Propertien hedder "(Name)". I mit eksempel har jeg lavet en datokolonne som jeg har kaldt olvDateColumn.
I konstruktøren (eller Load eventet) på din form, skriver du: this.olvDateColumn.AspectToStringConverter = new BrightIdeasSoftware.AspectToStringConverterDelegate(delegate(object o) { return ((DateTime)o).ToShortDateString(); });
ObjectListView vil kalde den delegate som bliver sat i AspectToStringConverterDelegate propertien, for hver row, for at konvertere værdien til en string. I dette tilfælde er værdien en dato, så jeg caster til en DateTime, og kalder ToShortDateString() og returnerer resultatet.
Jeg tillader mig lige at stille et spørgsmål mere :)
Jeg kunne godt tænke mig at skifte farve på nogle af linjer i listen. F.eks. hvis jeg kontrollere om et felt i en linje indeholder en bestemt værdi, så skal den pågældende linje skifte farve, eller bare farveskift på teksten...
Ved du om det kan lade sig gøre, og i så fald hvordan?
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.