Datagridview Darstellung

  • Allgemein

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von diylab.

    Datagridview Darstellung

    Datagridview Darstellung

    wie ich bei meiner Suche gesehen habe, wurde diese Frage schon einmal ca. 04/2008 gestellt. Eine Lösung konnte ich jedoch nirgendwo finden.

    Es müssen zusammenhängende Zellen als solche auch dargestellt werden.
    Unter VB6 kein Problem: .MergeCol(x) = True

    Wie aber macht man es in VB.net 10 ? ? ? ? ;(
    Bilder
    • cats.jpg

      11,39 kB, 201×81, 1.116 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „it-aha“ ()

    it-aha schrieb:

    Datagridview Darstellung

    wie ich bei meiner Suche gesehen habe, wurde diese Frage schon einmal ca. 04/2008 gestellt. Eine Lösung konnte ich jedoch nirgendwo finden.

    Es müssen zusammenhängende Zellen als solche auch dargestellt werden.
    Unter VB6 kein Problem: .MergeCol(x) = True

    Wie aber macht man es in VB.net 10 ? ? ? ? ;(
    MS biete folgenden Link an:

    msdn.microsoft.com/de-de/libra…407126%28v=vs.100%29.aspx

    werde den mal in Ruhe austesten, ob es meiner Suche dienlich ist. ?(
    Dein Fundstück bezieht sich auf Wpf-DataGrid.
    Ist in WinForms nicht verwendbar.
    Es soll zwar Tricks geben, wie mans auch in Winforms hostet, aber ob das sinnvoll ist, oder ühaupt was bringt zum Thema CellMerging wage ich zu bezweifeln.

    Mir scheint aber auch, was dir vorschwebt ist weniger ein Tabellen-Anzeige-Control (DatagridView) als eine Art Balken-Chart (ChartControl).
    Ich habe hier mal einen etwas größeren Ausschnitt, der erste war etwas "unsachlich". Per Mausclick kann der Anwender mit 1 Click die Unterkunft, das zeitfenster und den Gast selektieren.

    Ich glaube aber, das ich mit meiner Suche nach einem geeignetem Tool absolut auf dem Holzweg war. Eine Darstellung mit ListView scheint der Sache wesentlich näher zu kommen. (man sollte doch erst einmal das Buch durchblättern, wenn schon zu faul zum lesen)
    Bilder
    • screen.jpg

      404,58 kB, 1.265×465, 643 mal angesehen
    Dassis ein Calendar-Control, und dafür sind weder ListView noch DatagridView eigentlich für gemacht.

    Diese beiden Controls sind dafür gemacht, um Listen anzuzeigen, also einen Datensatz nach dem anderen.

    Ein Kalender ist aber keine Liste von Datensätzen, sondern ist eher eine Matrix, also ein 2-dimensionales Array.

    Der grundsätzliche Unterschied zw. Matrix und Liste ist, dass eine Matrix eine bestimmte Anzahl von Feldern in Breite und Höhe fest vorgegeben hat, ob für die Felder nun Daten existieren oder nicht.

    Bei einer Liste ist nur die Breite (Spalten-Anzahl) vorgegeben, die Höhe ist so hoch, wie die Liste lang ist. Das kann immens lang sein, aber auch total kurz, und sogar leer.
    In einer Liste kommt es aber nicht vor, dass da eine Zeile ist, wo keine Daten sind.

    Also du wirst etwas ganz von DGV oder LV verschiedenes erfinden müssen, etwas, was einen bestimmten Bereich aufspannt, und dann die Daten da hineinsortiert, wie in einen Setzkasten.

    Dazu kann man DGV oder auch LV gewissermaßen "vergewaltigen", zB. indem man Pseudo-Daten-Objekte generiert, die eben genau die Matrix aufspannen, und die ausserdem fähig sind, die echten Daten aufzunehmen (also ein PseudoDaten-Objekt fungiert als Setzkasten-Fach). Vlt. lohnt es sich, Experimente mittm VirtualMode von LV oder DGV zu machen.

    Zu den Querbalken wirds das einfachste sein, diese per OwnerDrawing übers LV/DGV zu malen, im Paint-Event.

    Also die Aufgabe ist extrem anspruchsvoll, und ist die Frage, obs einfacher ist, die DGV-"Vergewaltigung" selbst zu versuchen, oder ob man sich auf CodeProject oder sonstwo nach Calendar-Controls umguckt - mir war, als hätte ich gelegentlich sehr mächtige Teile gesehen.
    Dabei ists egal, ob die CodeProject-Sache etwa in c# implementiert ist, die Aufgabe ist imo so anspruchsvoll, dass der Anspruch, c# zu verstehen noch zu den minor problems gehört.
    Erst einmal Danke für die ausführliche Kommentierung.
    Die bestehende Anwendung wurde von mir vor Jahren in VB6 erstellt. Das dargestellte Grid ist kein Calendergrid sondern das "MSFlexGrid" ohne Vergewaltigung unter Ausnutzung der .merge(x) Funktion

    Mein Problem besteht lediglich darin, das ich kein gleichwertiges Modul in vb-net finde. Einzige Bedingung an das Teil ist, dass Zellen mit selben Inhalt zusammenhängend angezeigt werden müssen. Die Balken werden durch hinterlegte Daten erzeugt und NICHT durch den Anwender verschoben wie im Outlook Kalender etc.
    wie gesagt:

    ErfinderDesRades schrieb:

    du wirst etwas ganz von DGV oder LV verschiedenes erfinden müssen, etwas, was einen bestimmten Bereich aufspannt, und dann die Daten da hineinsortiert, wie in einen Setzkasten.

    Dazu kann man DGV oder auch LV gewissermaßen "vergewaltigen", zB. indem man Pseudo-Daten-Objekte generiert, die eben genau die Matrix aufspannen, und die ausserdem fähig sind, die echten Daten aufzunehmen (also ein PseudoDaten-Objekt fungiert als Setzkasten-Fach). Vlt. lohnt es sich, Experimente mittm VirtualMode von LV oder DGV zu machen.

    Zu den Querbalken wirds das einfachste sein, diese per OwnerDrawing übers LV/DGV zu malen, im Paint-Event.

    ErfinderDesRades schrieb:

    wie gesagt:

    ErfinderDesRades schrieb:

    du wirst etwas ganz von DGV oder LV verschiedenes erfinden müssen, etwas, was einen bestimmten Bereich aufspannt, und dann die Daten da hineinsortiert, wie in einen Setzkasten.

    Dazu kann man DGV oder auch LV gewissermaßen "vergewaltigen", zB. indem man Pseudo-Daten-Objekte generiert, die eben genau die Matrix aufspannen, und die ausserdem fähig sind, die echten Daten aufzunehmen (also ein PseudoDaten-Objekt fungiert als Setzkasten-Fach). Vlt. lohnt es sich, Experimente mittm VirtualMode von LV oder DGV zu machen.

    Zu den Querbalken wirds das einfachste sein, diese per OwnerDrawing übers LV/DGV zu malen, im Paint-Event.

    OK, ich werde dann mal meiner Kreativität freien Lauf lassen. Über positive Erlebnisse finden sich dann hier die Ergebnisse wieder

    Danke erst einmal

    DataGridView - Flexgrid

    Ich habe eine Lösung gefunden.

    Auf meinem Sytem ist auch VB6. (Sp6) installiert. Somit bin ich legal im Besitz der msflxgrd.oxc. Da die Funktionen von diesem Modul aber unter vb.net scheinbar nicht vorhanden sind, habe ich dieses Modul in vb.net importiert. > Menü -> Extras -> Toolboxelemente auswählen -> Registerkarte "COM-Steuerelemente" und dann unter Namen "Microsoft Flexgrid Control, version 6.0"

    Es ist sicherlich nicht im Sinne vom .NET Design, aber manchmal muss man auch "um die Ecke denken".

    Die ersten Proben sind ohne Fehler durchlaufen. Somit kann die bisherige Anwendung jetzt für den Anwender in der optischen Nähe neu aufgesetzt werden.

    Ich danke nochmal allen, die sich hierfür auch den Kopf zerbrochen haben.




    :) 8o :thumbsup:
    Tja, Danke für den Tipp

    es ist nicht das, was ich suche. Die vorgestelle Lösung kann ich auch mit Termineintragungen in Outlook realisieren.

    Die Anforderung ist KEIN KALENDER sondern schlicht und einfach ein Grid, welche Zellen miteinander verbindet.
    ist nicht wirklich überzeugend geworden.
    Habe die Paint-Methode der DatagridviewPaintEventArgs überschätzt.

    Aber ein kleiner Einstieg ins OwnerDrawing.
    Du kannst auch Zahlen eingeben, dann mergt das entsprechend um (aber noch buggy, denn man müsste die Nachbarzellen einer Eingabe refreshen).
    Bilder
    • Shots14.Png

      13,24 kB, 558×335, 483 mal angesehen
    Dateien