Hallo zusammen,
Ich habe Daten welche ich auf mehrere Tabellenblätter in Excel verteilen möchte.
Es gibt Tabellenblätter mit festen Namen sowie Sheets die der Benutzer individuell benennen kann.
Damit der Benutzer die Namen setzen kann, habe ich auf einem Formular eine Listbox erstellt.
In einerm DataGridView sollen (ein Teil) der Daten dargestellt werden, damit der Benutzer entscheiden kann, welche Daten auf welches Tabellenblatt sollen.
Dafür habe ich dem DGV 3 Spalten gegeben, Column1 enthält die Nummer, Column2 die Zeile und Column3 (als DataGridViewComboBoxColumn) das Ziel-Tabellenblatt.
Da die Listbox sowie die ComboBoxColumn die gleiche Daten enthalten sollen, habe ich hierfür eine BindingList(of String) erstellt.
Hier meine (etwas reduzierte) Form:
und der entsprechende Quellcode:
Nun mein Problem:
Wähle ich in einer der Comboboxen einen Eintrag der hardcoded in der Liste steht funktioniert alles einwandfrei. (Hier 'Daten' oder 'Infos')
Füge ich über den Button einen neuen Eintrag hinzu, wird mir der neue Eintrag in der Listbox als auch in der Auswahl jeder Combobox dargestellt.
Wähle ich selbigen nun jedoch in einer der Combobxen aus, kommt folgende Fehlermeldung:
Es ist mir ein Rätsel, warum das DGV die neuen Daten der Liste zwar als Auswahl anzeigt, diese aber nicht als gültig erkennt
Meine Wunschlösung wäre an einer Zeile im Code ein Update oder änliches aufzurufen, damit diese Werte ebenfalls als gültig akzeptiert werden.
Ich habe in Foren gelesen, dass ein DataSet mit 2 Tabellen (Items für die Comboboxen und Daten für das DGV) inkl. Abhängigkeit zueinander abhilfe schaffen kann.
In dem finalen Programm muss die Reihenfolge der Tabellenblätter ebenfalls durch den Benutzer konfiguriert werden.
Dies sorgte recht schnell dazu, dass ich diesen Ansatz wieder fallen ließ, da ich keine Möglichkeit sah, der ListBox mitzuteilen, wie sie die Daten der Tabelle Items zu sortieren hat...
Ich hoffe ihr konnt mir weiter helfen...
Gruß DerBrain87
*EXE-Anhang entfernt*
Ich habe Daten welche ich auf mehrere Tabellenblätter in Excel verteilen möchte.
Es gibt Tabellenblätter mit festen Namen sowie Sheets die der Benutzer individuell benennen kann.
Damit der Benutzer die Namen setzen kann, habe ich auf einem Formular eine Listbox erstellt.
In einerm DataGridView sollen (ein Teil) der Daten dargestellt werden, damit der Benutzer entscheiden kann, welche Daten auf welches Tabellenblatt sollen.
Dafür habe ich dem DGV 3 Spalten gegeben, Column1 enthält die Nummer, Column2 die Zeile und Column3 (als DataGridViewComboBoxColumn) das Ziel-Tabellenblatt.
Da die Listbox sowie die ComboBoxColumn die gleiche Daten enthalten sollen, habe ich hierfür eine BindingList(of String) erstellt.
Hier meine (etwas reduzierte) Form:
und der entsprechende Quellcode:
VB.NET-Quellcode
- Public Class Form1
- Private mItems As New BindingList(Of String)
- Public Sub New()
- ' Dieser Aufruf ist für den Designer erforderlich.
- InitializeComponent()
- ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
- mItems.Add("Daten")
- mItems.Add("Infos")
- ListBox1.DataSource = mItems
- Column3.DataSource = mItems
- Dim data = LeseExcel()
- For i = 0 To data.GetLength(0) - 1
- If data(i, 0) IsNot Nothing Then
- DataGridView1.Rows.Add(data(i, 0), i, "Daten")
- End If
- Next
- End Sub
- Private Function LeseExcel() As Object(,)
- ' Erzeugt fiktive Daten, welche in das DataGridView sollen
- ' Originale Daten stammen aus einer Exceldatei
- Dim data(99, 3) As Object
- Dim count As Integer = 0
- Dim zufallszahl As New Random
- For i = 0 To 99
- If zufallszahl.Next(1, 5) = 1 Then
- count += 1
- data(i, 0) = count
- End If
- data(i, 1) = zufallszahl.Next(0, 10)
- data(i, 2) = zufallszahl.Next(0, 10)
- data(i, 3) = zufallszahl.Next(0, 10)
- Next
- Return data
- End Function
- Private Sub Button_Add_Click(sender As Object, e As EventArgs) Handles Button_Add.Click
- If Not mItems.Contains(TextBox1.Text) Then
- mItems.Add(TextBox1.Text)
- End If
- End Sub
- End Class
Nun mein Problem:
Wähle ich in einer der Comboboxen einen Eintrag der hardcoded in der Liste steht funktioniert alles einwandfrei. (Hier 'Daten' oder 'Infos')
Füge ich über den Button einen neuen Eintrag hinzu, wird mir der neue Eintrag in der Listbox als auch in der Auswahl jeder Combobox dargestellt.
Wähle ich selbigen nun jedoch in einer der Combobxen aus, kommt folgende Fehlermeldung:
Es ist mir ein Rätsel, warum das DGV die neuen Daten der Liste zwar als Auswahl anzeigt, diese aber nicht als gültig erkennt
Meine Wunschlösung wäre an einer Zeile im Code ein Update oder änliches aufzurufen, damit diese Werte ebenfalls als gültig akzeptiert werden.
Ich habe in Foren gelesen, dass ein DataSet mit 2 Tabellen (Items für die Comboboxen und Daten für das DGV) inkl. Abhängigkeit zueinander abhilfe schaffen kann.
In dem finalen Programm muss die Reihenfolge der Tabellenblätter ebenfalls durch den Benutzer konfiguriert werden.
Dies sorgte recht schnell dazu, dass ich diesen Ansatz wieder fallen ließ, da ich keine Möglichkeit sah, der ListBox mitzuteilen, wie sie die Daten der Tabelle Items zu sortieren hat...
Ich hoffe ihr konnt mir weiter helfen...
Gruß DerBrain87
*EXE-Anhang entfernt*
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()