vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Eigene Datagridview-Zelle erststellen und in Datagridview einbinden 
Autor: Manfred X
Datum: 15.04.14 13:01

http://www.devx.com/codemag/Article/35186
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Eigene 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.).
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.









Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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