Hallo Forum,
Ich habe eine Klasse implementiert die von BindingList(of T) abgeleitet ist.
Konkret:
Diese binde ich jetzt an eine BindingSource welche ich an mein DataGridView anhänge.
Konkret:
So weit so gut. Jetzt nur noch die DataGridView initialisieren
So jetzt habe ich ein DataGridView mit 3 Spalten.
1. Spalte = DataGridViewTextBoxColumn -> Auf Eigenschaft von clsArticle gebunden
2. Spalte = DataGridViewTextBoxColumn -> Auf Eigenschaft von clsArticle gebunden
3. Spalte = DataGridViewComboBoxColumn
Spalte 1 und Spalte 2 werden jetzt mit Daten aus meiner ArticleBindingSource gefüllt.
Mein Problem ist es jetzt die 3. Spalte zu füllen, da die Daten mit denen diese (ComboBox) gefüllt werden soll aus einer Eigenschaft (PriceCollection) von clsArticle kommen welche mir auch eine BindingList(of T) zurück gibt.
Konkret:
Kann mir einer einen Tipp geben, wie ich die ComboBox jetzt über meine BindingSource gefüllt bekomme.
Ich hoffe ich habe mich Verständlich ausgedrückt.
Ich habe eine Klasse implementiert die von BindingList(of T) abgeleitet ist.
Konkret:
Code:
Public Class clsArticleCollection Inherits BindingList(Of clsArticle) End Class
Konkret:
Code:
private ArticleBindingSource As New BindingSource() private myArticleCollection As New clsArticleCollection() ArticleBindingSource.DataSource = myArticleCollection
Code:
private ArticleDataGridView As New DataGridView() Me.ArticleDataGridView.SuspendLayout() Me.ArticleDataGridView.AutoGenerateColumns = False 'Hier wird jetzt die vorher erstellte ArticleBindingSource an das DataGridView 'gehängt welches dieses mit den Daten aus der Collection füllt Me.ArticleDataGridView.DataSource = Me.ArticleBindingSource Dim colCode As New DataGridViewTextBoxColumn colCode.Name = "Code" colCode.DataPropertyName = "Code" --> Code = Eigenschaft von clsArticle colCode.HeaderText = "Artikelnummer" colCode.ReadOnly = True Me.ArticleDataGridView.Columns.Add(colCode) Dim colDescription As New DataGridViewTextBoxColumn colDescription.Name = "Description" --> Description = Eigenschaft von clsArticle colDescription.DataPropertyName = "Description" colDescription.HeaderText = "Artikelbeschreibung" colDescription.ReadOnly = True Me.ArticleDataGridView.Columns.Add(colDescription) Problem Spalte -> Erklärung folgt unten Dim colPrices As New DataGridViewComboBoxColumn colPrices.Name = "Prices" colPrices.HeaderText = "Preise" colPrices.DataSource = ??? colPrices.DataPropertyName = ??? Me.ArticleDataGridView.Columns.Add(colPrices) 'Aufbau der GridView ist beendet. Me.ArticleDataGridView.ResumeLayout()
1. Spalte = DataGridViewTextBoxColumn -> Auf Eigenschaft von clsArticle gebunden
2. Spalte = DataGridViewTextBoxColumn -> Auf Eigenschaft von clsArticle gebunden
3. Spalte = DataGridViewComboBoxColumn
Spalte 1 und Spalte 2 werden jetzt mit Daten aus meiner ArticleBindingSource gefüllt.
Mein Problem ist es jetzt die 3. Spalte zu füllen, da die Daten mit denen diese (ComboBox) gefüllt werden soll aus einer Eigenschaft (PriceCollection) von clsArticle kommen welche mir auch eine BindingList(of T) zurück gibt.
Konkret:
Code:
Public Class clsArticle Protected sCode As String Protected sDescription As String Protected myPriceCollection As clsPriceCollection Public Overridable Property Code() As String Get Return Me.sCode End Get Set(ByVal value As String) Me.sCode = value End Set End Property Public Overridable Property Description() As String Get Return Me.sDescription End Get Set(ByVal value As String) Me.sDescription = value End Set End Property Diese Eigenschaft enthält die Daten für die ComboBox Spalte Protected Overridable Property PriceCollection As clsPriceCollection Get Return Me.myPriceCollection End Get Set(ByVal value As clsArticlePriceCollection) Me.myPriceCollection = value End Set End Property End Class Public Class clsPriceCollection Inherits BindingList(Of clsPrice) End Class Public Class clsPrice Protected dPrice As Double Protected sComment As String Public Overridable Property Price() As Double Get Return Me.dPrice End Get Set(ByVal value As Double) Me.dPrice = value End Set End Property Public Overridable Property Comment() As String Get Return Me.sComment End Get Set(ByVal value As String) Me.sComment = value End Set End Property End Class
Ich hoffe ich habe mich Verständlich ausgedrückt.
Comment