| |
VB.NET - Ein- und UmsteigerEigene Datagridview-Zelle erststellen und in Datagridview einbinden | | | Autor: Jojo0405 | Datum: 15.04.14 11:27 |
| Hallo Forum,
im Rahmen meines mittlerweile nicht mehr allzukleinen Projekts einen Terminplaner mit Tagesansicht zu erstellen, habe ich mich nun erstweilig auch mit der genaueren Objektorientiern Programmierung beschäftigt.
Mein Problem ist im Moment, dass ich Versuche, eigene Datagridview-Zellen zu erstellen um diesen einige Zusatz Eigenschaften zu spendieren. Ziel ist es, beim Klick auf eine Zelle mir die zu angehörigen Objekt Eigenschaften wie (Termin-ID und Inhalt (Beides Werte aus der Datenbank)) anzeigen zu lassen.
Meine Zell-Klasse "Cell" Sieht bisher wie folgt aus:
Public Class Cell : Inherits DataGridViewCell
Private intID As Integer
Private StrInhalt As String
Property ID As Integer
Get
ID = intID
End Get
Set(newname As Integer)
intID = newname
End Set
End Property
Property Inhalt As String
Get
Inhalt = StrInhalt
End Get
Set(newInhalt As String)
StrInhalt = newInhalt
End Set
End Property
Public Sub New(ByVal p_ID As Integer, p_Inhalt As String)
intID = p_ID
StrInhalt = p_Inhalt
End Sub
End Class Diese Zelle in ein Datagridview zu packen versuche ich wie folgt:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim c1 As New Cell(1, "Johannes")
DataGridView1.ColumnCount = 2
DataGridView1.Rows.Add(1)
c1 = DataGridView1.Rows(0).Cells(0)
c1.Value = "Hallo"
End Sub Beim erstellen Spuckt mir der Debuger folgenden Fehler aus:
"Zusätzliche Informationen: Das Objekt des Typs "System.Windows.Forms.DataGridViewTextBoxCell" kann nicht in Typ "OwnDatagrid.Cell" umgewandelt werden."
Ich bin mir durchaus bewusst, dass das was ich mit dem Datagridview versuche, nicht der Erdachten Funktion entspricht. Allerdings fällt mir auch keine andere Möglichkeit ein.
Kann mir da jemand etwas auf die Sprünge helfen?
Grüße,
Jojo0405 | |
Re: Eigene Datagridview-Zelle erststellen und in Datagridview einbinden | | | Autor: Manfred X | Datum: 15.04.14 12:28 |
| Hallo!
Gewöhnlich verwendet man DataBinding um Infos
aus einer Datenbank anzuzeigen.
Ich würde die Texteigenschaft eines geeigneten Controls
per Databindings an die Bindingsource, an die das Grid gehängt
ist, binden - für die relevante Zusatz-Spalte.
Bei einem Click auf eine Zelle in dieser Spalte würde
ich das Control geeignet vor dem Grid positionieren und
sichtbar machen. | |
Re: Eigene Datagridview-Zelle erststellen und in Datagridview einbinden | | | Autor: Jojo0405 | Datum: 15.04.14 14:08 |
| Ich bin mir nicht ganz sicher, ob das das richtige bzw. das was ich mir vorstelle.
Die Tagesansicht soll in den Spalten aus den Namen der Mitarbeiter bestehen.
In den Rowheadern sollten dann Uhrzeiten stehen (z. B. 8:00 Uhr, 9:00 Uhr etc.
So wie ich es mir momentan vorstelle, sollten dann die Zellen (als meine neue Klasse) mit den neuen Propertys versehen werden(Inhalt des Termins, ID in der Datenbank) und farblich den Zeitraum markieren (über Background colour z. B.).
| |
Re: Eigene Datagridview-Zelle erststellen und in Datagridview einbinden | | | Autor: Jojo0405 | Datum: 15.04.14 14:36 |
| Wenn ich dich richtig verstehe, dann ist dein Ansatz genau das, was ich mir darunter vorstelle. Nur den Weg zur Lösung kenne ich noch nicht wirklich richtig...
| |
Re: Eigene Datagridview-Zelle erststellen und in Datagridview einbinden | | | Autor: Manfred X | Datum: 15.04.14 14:31 |
| Hallo!
Was genau Du Dir vorstellst, weiß ich nicht.
Ich verstehe schon nicht, weshalb die Uhrzeit in den Rowheadern stehen soll.
Das Zeitintervall ist doch eigentlich ein Datenelement und gehört deshalb in
eine Spalte (z.B. in die erste sichtbare Spalte im Grid).
So wie ich das sehe, benötigst Du eine einstellbare Datenklasse,
die je nach Vorgabe (boolsche Property: ShowExtendedProperties)
in den gebundenen List-Properties entsprechend unterschiedlich aufbereitete
Daten an die abfragende "Bindingsource" zurückliefert.
| |
Re: Eigene Datagridview-Zelle erststellen und in Datagridview einbinden | | | Autor: Kuno60 | Datum: 12.05.14 22:21 |
| Hallo Jojo0405,
es ist möglich, eigene Spaltentypen mit eigenen Zellen, für ein Datagridview zu erstellen. Diese werden auch automatisch vom Datagridview erkannt.
Dies wirst Du aber für Deinen Zweck nicht brauchen.
Bei einem datengebundenen Datagridview kannst du über das CellClick-Ereignis die Daten aus BindingSource.Current abrufen.
Über eine gut geschriebene LINQ-Abfrage zeigt das Datagridview auch genau die Daten an, die Du sehen willst.
Dim abfrage = From x in ...
Me.BindingSource1.DataSource = abfrage | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevDTA 3.0 Pro
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|