Tabelle Ausgabe: Pos. KD Leistungsdatum Leistungsdatum Ende Von Bis Auftrag Leistung Stunden 14 1 14 05.02.2018 06.02.2018 09:00:00 13:00:00 1 Bearbeiten 20
Teil Code:
Pos += 1
'ListView-Objekt um neue Zeile ergänzen POS eintragen Dim LVItem As ListViewItem 'Dim Daten As ListViewItem
'Subeinträge der neuen Zeile Dim parts() = cboSArbeiten.Text.Split({"-"}, StringSplitOptions.None) 'TextBox1.Text.Split({"-"}, StringSplitOptions.None) Dim item = ListViewTimeWork.Items.Add(parts(0)) '(0) 'Pos eintragen... LVItem LVItem = ListViewTimeWork.Items.Add(Pos.ToString("n0")) ' ### Muss ich noch ändern!!!! als SubItems !!! For i = 0 To parts.Length - 1 'i= LVItem.SubItems.Add(parts(i)) 'i item.SubItems Next
Die Splitfunktion erstellt ein Feld. Wenn der erste Eintrag nicht verwendet werden soll, dann einfach mit Index 1 statt 0 im Feld beginnen.
Beispiel:
' Hinzufügen des zweiten Eintrags als Item: Dim item = ListViewTimeWork.Items.Add(parts(1)) ' oder in der Schleife: For i = 1 To parts.Length - 1 LVItem.SubItems.Add(parts(i)) Next
Ich hoffe, ich habe Ihre Anfrage richtig verstanden. Bei Zugriffen empfiehlt es sich natürlich vorher die Anzahl der Elemente im Feld zu bestimmen, damit man keine Zugriffe außerhalb des Feldindexbereichs riskiert ;-)
Den Eintrag mit der 14 erzeugen Sie doch explizit:
'Subeinträge der neuen Zeile Dim parts() = cboSArbeiten.Text.Split({"-"}, StringSplitOptions.None) 'TextBox1.Text.Split({"-"}, StringSplitOptions.None) Dim item = ListViewTimeWork.Items.Add(parts(0)) '(0. Eintrag?) 'Pos eintragen... LVItem LVItem = ListViewTimeWork.Items.Add(Pos.ToString("n0")) ' ### Muss ich noch ändern!!!! als SubItems !!! For i = 0 To parts.Length - 1 'i= LVItem.SubItems.Add(parts(i)) 'i item.SubItems Next
Ich hatte mir das Eintragen so gedacht:
'Subeinträge der neuen Zeile Dim parts() = cboSArbeiten.Text.Split({"-"}, StringSplitOptions.None) 'TextBox1.Text.Split({"-"}, StringSplitOptions.None) 'Pos eintragen... LVItem LVItem = ListViewTimeWork.Items.Add(Pos.ToString("n0")) ' ### Muss ich noch ändern!!!! als SubItems !!! For i = 1 To parts.Length - 1 'i= LVItem.SubItems.Add(parts(i)) 'i item.SubItems Next
So sollte der erste Eintrag immer übersprungen und nicht angezeigt werden.
Problematisch ist es das ich den Text von der Combobox Splitten muss und dann mit Pos +=1 die Positionsnummer und dann den Combotext db ausgelesen in Liestview eintragen muss... nur wie ich es drehe erscheint trotzdem die 14 als erstes dann der combotext...
Ich verstehe Ihr Problem nicht so ganz. Sie bauen eine Tabelle (ListView) auf und haben eine Zeichenkette, die Sie am Minuszeichen trennen. Damit haben Sie doch zugriff auf jedes Element der Zeichenkette und können die Spalten der Tabelle in beliebiger Reihenfolge füllen? Oder fehlen in Ihrem Codebeispiel wichtige Informationen? - Sie erzeugen eine Überschrift und eine weitere Zeile mit n Spalten oder habe ich etwas übersehen?
'ListView-Objekt um neue Zeile ergänzen POS eintragen Dim LVItem As ListViewItem 'Dim Daten As ListViewItem
'Subeinträge der neuen Zeile Dim parts() = cboSArbeiten.Text.Split({"-"}, StringSplitOptions.None) 'TextBox1.Text.Split({"-"}, StringSplitOptions.None) 'Dim item = ListViewTimeWork.Items.Add(parts(0)) '(0) ### Diese Zeile auskommentieren. 'Pos eintragen... LVItem LVItem = ListViewTimeWork.Items.Add(Pos.ToString("n0")) ' Muss ich noch ändern!!!! als SubItems !!! For i = 0 To parts.Length - 1 'i= For i = 1 To parts.Length - 1 LVItem.SubItems.Add(parts(i)) 'i item.SubItems Next
Genau das war mein Vorschlag vor ein paar Tagen. Ich hatte lediglich mit der Aufzählung bei Position 1 begonnen, da ich dachte Sie benötigen das erste Element des Feldes nicht. Schön, dass das Problem gelöst ist...
Gruss TM