Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


ListView AddRange

Postades av 2007-05-17 19:35:42 - Thomas Roman, i forum vb.net, Tråden har 11 Kommentarer och lästs av 932 personer

Jag försöker lägga till flera rader samtidigt genom AddRange men jag lyckas inte göra det. Jag hittar heller inte något exempel på nätet.
Nån här som vet hur man gör?


Thomas


Svara

Sv: ListView AddRange

Postades av 2007-05-18 09:41:19 - Andreas Hillqvist

Om du vet hur många så är en array enklast och effektivast:

        Dim Item As ListViewItem
        Dim Items(9) As ListViewItem
        Dim I As Integer
        For I = 0 To 9
            Item = New ListViewItem
            Item.Text = String.Format("Item {0}", I)
            Items(I) = Item
        Next
        ListView1.Items.AddRange(Items)

</code>


Svara

Sv:ListView AddRange

Postades av 2007-05-18 11:28:29 - Thomas Roman

Jag vet inte hur många rader som ska läggas till. Sen så måste jag kunna ange en key för varje rad, jag kan inte se att det är möjligt med ditt exempel?


Thomas


Svara

Sv: ListView AddRange

Postades av 2007-05-18 17:28:32 - Andreas Hillqvist

Vad är din källa, en databas?
Mitt exempel är bara en stub. I Din loop så fyller du i de egenskaper du vill ha.


Svara

Sv:ListView AddRange

Postades av 2007-05-18 17:40:39 - Thomas Roman

Det är en databas ja. Jag gör flera sökningar i den och därför vet jag inte från början hur många det kommer att bli totalt. Givetvis kan jag göra några SELECT COUNT() först för att få reda på det, men det känns inte helt optimalt.
Nu när jag skriver det här så kom jag på att jag inte nödvändigtvis behöver lägga till alla direkt, utan kan lägga till raderna en gång per sökning, så då är det problemet löst.

Hur som helst så är Key-problemet kvar. En ListViewItem har ingen Key. Den verkar bara kunna anges när man lägger till en ListViewItem i ListViewn.

Dom exempel jag har sett på nätet nämner ListViewItemCollection, och när man lägger till objekt i den så kan man ange Key. Men jag har inte lyckats få ListViewItemCollection att fungera med AddRange.


Thomas


Svara

Sv: ListView AddRange

Postades av 2007-05-18 18:43:21 - Thomas Roman

Nu har jag kommit lite längre, man var tydligen tvungen att ange en owner-Listview när man dimmade sin ListViewItemCollection.

<code>
Dim AllItems As New ListView.ListViewItemCollection(ListView1)
AllItems.Add(Key, Text ImageIndex)
ListView1.AddRange(AllItems)
</code>

Jag lägger givetvis till fler items och dom kommer från en databas. Men på AddRange får jag ett fel:
<info>
Det går inte att lägga till eller infoga elementet Hej på mer än en plats. Du måste först ta bort det från den aktuella platsen eller klona det.
Parameternamn: item
</info>

"Hej" är texten för en item i AllItems. Eventuellt finns "Hej" med flera gånger i databasen, men jag använder ID:t som Key så det är garanterat unikt.

Vad kan vara fel?


Thomas


Svara

Sv:ListView AddRange

Postades av 2007-05-19 01:04:25 - Andreas Hillqvist

Du kopplar din collection till listviewn. Så du behöver därför inte göra någon AddRange. Eftersom detta skulle få den att lägga till samma objekt två gånger.

Varför kan du int använda:

ListView.Itmes.Add(item)


Alternativt om du vill lägga till alla i ett svep:
Dim Item As ListViewItem
Dim Items As New System.Collections.Generic.List(Of ListViewItem)
Dim I As Integer
For I = 0 To 10
    Item = New ListViewItem
    Item.Text = String.Format("Item {0}", I)
    Items.Add(Item)
Next
ListView1.Items.AddRange(Items.ToArray())


Svara

Sv: ListView AddRange

Postades av 2007-05-19 23:17:19 - Thomas Roman

Att lägga till dom på vanligt sätt tar för lång tid. Jag läste att AddRange var det bästa sättet för att lägga till många rader.

Det fungerar nu när jag använder ListViewItemCollection utan AddRange, men då är frågan, blir det verkligen någon prestandavinst? Nu känns det som att jag lägger till raderna en och en igen.


Thomas


Svara

Sv:ListView AddRange

Postades av 2007-05-20 00:02:24 - Andreas Hillqvist

Har du tittat på mit andra exempel?


Svara

Sv: ListView AddRange

Postades av 2007-05-21 09:58:18 - Thomas Roman

Jag har inte testat den så att jag vet om prestandan är bättre eller inte, för det går inte att ange någon Key för raderna och det är nödvändigt.


Thomas


Svara

Sv:ListView AddRange

Postades av 2007-05-21 10:43:49 - Andreas Hillqvist

Jag tror det är egenskapen Name du söker.
<info>
Remarks
----------
If the ListView is sorted, the item is added in the correctly sorted order; otherwise, it is added to the end of the collection. The Name property corresponds to the key for a ListViewItem in the ListView.ListViewItemCollection.

The Add method sets the Name property to the specified key, so the item can be retrieved by its index or by key.
</info>
http://msdn2.microsoft.com/en-us/library/ba9b96ey.aspx

Så för att ange en nyckel sätt bara name-egenskapen:

Function ToKey(ByVal id As Integer) As String
    Return String.Format("Key{0:0000}", id)
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim Item As ListViewItem
    Dim Items As New System.Collections.Generic.List(Of ListViewItem)
    Dim I As Integer
    For I = 1001 To 1010
        Item = New ListViewItem
        Item.Name = ToKey(I)
        Item.Text = String.Format("Item {0}", I)
        Items.Add(Item)
    Next
    ListView1.Items.AddRange(Items.ToArray())

    Dim key As String = ToKey(1003)
    Item = ListView1.Items(key)
    Item.Selected = True
End Sub

Du behöver inget prefix i nyckeln som jag har i exemplet och vilket var tvungen i vb6 för numeriska värden:
Function ToKey(ByVal id As Integer) As String
    Return id.ToString
End Function

Funkar lika väl.


Svara

Sv: ListView AddRange

Postades av 2007-05-21 13:17:23 - Thomas Roman

Ah, fantastiskt! Ditt exempel fungerar perfekt och är otroligt mycket snabbare! Dessutom så har jag ofta haft problem med Key-egenskapen och nu har du löst det också.
Det enda som jag funderar på nu är varför dom har valt att döpa den till Name när den heter Key annard?


Thomas


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 725
27 958
271 751
376
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies