Listview groups vullen met strings

Status
Niet open voor verdere reacties.

mastermindzh

Verenigingslid
Lid geworden
10 dec 2008
Berichten
4.993
Beste helpmij-ers.

Ik zit met een klein probleempje,

Ik wil een listview vullen met een aantal groups, die maak ik zo:

Code:
 ListView1.Groups.Add(New ListViewGroup("Z"))

Vervolgens wil ik dus een aantal items nalopen (voor het gemak even uit een andere listview)
ik pak de eerste letter van een textbox, die gebruik ik om te bepalen in welke group hij moet komen, dat gebeurt zo:
Code:
AchternaamTextBox.Text.ToUpper.Substring(0, 1)
op het moment gebruik ik dit:
Code:
Dim group As String = AchternaamTextBox.Text.ToUpper.Substring(0, 1)
            Dim item As ListViewItem = New ListViewItem(New String() {VoornaamTextBox.Text & " " & AchternaamTextBox.Text}, group)
            ListView1.Items.Add(item)

of dit:
Code:
            Dim item As ListViewItem = New ListViewItem(New String() {VoornaamTextBox.Text & " " & AchternaamTextBox.Text}, AchternaamTextBox.Text.ToUpper.Substring(0, 1))
            ListView1.Items.Add(item)

beide vullen de listview gewoon met alle items, maar niet in de groups die ik wil.

Iemand?
 
Laatst bewerkt:
je moet linken naar een group, niet naar een string

voorbeeldje is C# maar het is vrijwel gelijk

Code:
//fill groups somewhere
string[] groups = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z".Split(',');
for (int i = 0; i < groups.Length; i++)
{
	listView1.Groups.Add(groups[i], groups[i].ToUpper());
}

//loop through contacts

var firstNameField = "John";
var lastNameField = "Bakker";         
var groupKey = lastNameField[0].ToString().ToLower();

var lvi1 = new ListViewItem(string.Format("{0} {1}", firstNameField, lastNameField), listView1.Groups[groupKey]);
 
Dan krijg ik hetzelfde:


code:
Code:
      For It = 0 To ContactenBindingSource.Count - 1
            Dim group As String = AchternaamTextBox.Text.ToUpper.Substring(0, 1)
            Dim item As ListViewItem = New ListViewItem(New String() {VoornaamTextBox.Text & " " & AchternaamTextBox.Text}, ListView1.Groups.Item(group))
            ListView1.Items.Add(item)
            ContactenBindingSource.MoveNext()
        Next
 
heb je ook een key bij je group zitten? of alleen een name?

(zie hoe ik groups toevoeg, (key, name))
 
Wat ik zie is dit:

Code:
var groupKey = lastNameField[0].ToString().ToLower();

var lvi1 = new ListViewItem(string.Format("{0} {1}", firstNameField, lastNameField), listView1.Groups[groupKey]);

groupkey is bij mij dus "group"
Code:
   Dim group As String = AchternaamTextBox.Text.ToUpper.Substring(0, 1)


dan voeg je hem toe met listview1.groups[groupkey], dat doet hij niet in VB.

wat wel werkt (om groups te maken) is de manier die ik gebruikte:
Code:
Dim A As New ListViewGroup("A")
        ListViewInfo.Groups.Add(A)

je kunt dan een item toevoegen:
Code:
   Dim lvi As ListViewItem = New ListViewItem(New String() {VoornaamTextBox.Text & " " & AchternaamTextBox.Text}, A)
            ListViewInfo.Items.Add(lvi)

dit werkt dan, dan komt hij bij A.

maar ik wil die A dus vervangen door een group die automatisch gekozen moet worden aan de hand van de eerste letter van de achternaam.

(als achternaam = D , dan group = D)
 
maar je moet bij het maken van een group een key toevoegen; Dim A As New ListViewGroup("A", "A")


Code:
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        ListView1.Columns.Add("Name")
        ListView1.View = View.Details
        ListView1.ShowGroups = True

        ListView1.Groups.Add(New ListViewGroup("b", "B"))  'key, name!

        Dim lastNameField As String = "Bakker"
        Dim groupKey As String = lastNameField(0).ToString.ToLower()

        ListView1.Items.Add(New ListViewItem(lastNameField, ListView1.Groups.Item(groupKey)))
    End Sub
 
Nooit geweten van die key....

Bedankt het werkt :) (met 1 letter altans :p de rest moet ik nog veranderen)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan