Zellen verbinden im DGV Layout

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    Zellen verbinden im DGV Layout

    Hallo,

    Ich habe eine DGV in der Buchungen dargestellt werden sollen. Die Informationen passen nicht in eine einzige Zeile, deshalb möchte ich diese Daten in ZWEI Zeilen darstellen (das ist die Anzeige, die üblicherweise auch von Finanzsoftware verwendedt wird). Ich habe zur Illustration einen Screenshot angehängt.

    Die erste Zeile ist ok ... in der zweiten Zeile wird in der Spalte "Recipient" der Buchungstext angezeigt ... der ist i.a. etwas länger und soll nach Möglichkeit über den Rand der Zelle hinaus fortgesetzt werden, also die folgenden Zellen verwenden / überlagern.

    Ich will in der zweiten Zeile also so etwas wie eine JOIN Operation der Zellen ausführen ... so wie man das etwa In einem EXCEL Spreadsheet lösen würde ... das würde meine Anwendung sehr verbessern.

    Geht das (unterschiedlicher ZellenLayout in verschiedenen Zeilen) ?

    Ich habe dazu bisher nix Passended gefunden - aber ich bin sicher, dass ihr wisst, wie man das lösen kann ... mit hoffentlich vertretbarem Aufwand. Sschließlich dürfte ich nicht der erste Mensch auf diesem Planeten sein, der so ein Anliegen hat. :)

    LG
    Peter
    Bilder
    • s 2024-05-11 09-59-508.jpg

      17 kB, 913×67, 63 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Peter329“ ()

    Und ein DetailView scheidet aus?
    Weiil der ist eiglich dafür vorgesehen, wenn die Datenflut aus iwelchen Gründen nicht recht in eine DGV-Zeile passen will.

    Ansonsten müsste man vermutlich aufwändiges OwnerDrawing anbringen - ganz genau abgestimmt auf deinen Anwendungsfall.
    Also wenn du den Weg gehen willst, müsstest du wohl eine Beispiel-Anwendung einstellen.
    schau ob das hilft, muss du anpassen ob 2 oder 3 Zeilen

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. With DataGridView1
    5. .Columns.Add("Sp1", "SP1")
    6. Dim i As Integer = .Columns.Add("Sp2", "SP2")
    7. .Columns(i).DefaultCellStyle.WrapMode = DataGridViewTriState.True
    8. .Columns(i).DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomLeft
    9. .Rows.Add(8)
    10. End With
    11. DGVColumsAutoSize(True)
    12. End Sub
    13. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    14. With DataGridView1
    15. .Rows(5).Cells(1).Value = "SVG Autoberatung/(XyzText) 01.01.2024 00:00:00 - 31.12.2024 00:00:00 Kostenstelle_ABC"
    16. Dim Gr As Graphics = Me.CreateGraphics()
    17. '.Rows(5).Height = CInt(Gr.MeasureString("X", .Font).Height * 2 + 1) ' 2 zeilen
    18. .Rows(5).Height = CInt(Gr.MeasureString("X", .Font).Height * 3 + 1) ' 3 zeilen
    19. End With
    20. End Sub
    21. Public Sub DGVColumsAutoSize(ByVal AutoSize As Boolean)
    22. If DataGridView1 Is Nothing Then
    23. Exit Sub
    24. End If
    25. Dim ColumnMode As DataGridViewAutoSizeColumnMode
    26. If AutoSize Then
    27. ColumnMode = DataGridViewAutoSizeColumnMode.AllCells
    28. Else
    29. ColumnMode = DataGridViewAutoSizeColumnMode.None
    30. End If
    31. With DataGridView1
    32. For i As Integer = 0 To .Columns.Count - 1
    33. .Columns(i).AutoSizeMode = ColumnMode
    34. Next
    35. End With
    36. End Sub
    37. End Class

    Vielen Dank erst mal für die Antworten.

    @EdR

    Das mit der Klasse "Detail View" kling ja recht vielversprechend ... allein diese Klasse finde ich nicht in meinem Visual Studio 2019 ... muss ich dazu iwelche Erweiterungen installieren? Und so richtig einfach scheint mir das auch nicht zu sein ...


    @'Kasi

    Vielen Dank für dein Code Beispiel ... das hab ich natürlich gleich ausprobiert ... (s. Anhang)

    Allerdings löst das nicht mein Problem ... mehrere Zeilen in eine Zellle zu platzieren ist natürlich machbar. Mir geht es aber um eine Änderung des SpaltenLayouts ... ich habe mal einen EXCEL Screenshot anghängt, wo man sieht, was ich da vorhabe. In der zweiten Zeile sind die Spalten 3 - 6 verbunden (s. Anhang). Der Titel meines Postings war wohl ein bissl verwirrend, deshalb hab ich den jetzt entsprechend geändert.

    Na ja, ich fürchte fast, dass die Sache nicht so einfach zu lösen ist ... umgehen kann man das natürlich indem man zur jeweils ausgewählten Zeile die Zusatzinfo in einer eigenen Textbox am unteren Ende der Seite anzeigt (so handhaben das auch einige kommerzielle Anbieter) .... aber dann ist das Ganze natürich nicht mehr so gut lesbar.

    Vielleicht habt ihr ja doch noch eine Idee ...

    LG
    Peter
    Bilder
    • s 2024-05-11 16-30-573.jpg

      20,03 kB, 662×362, 44 mal angesehen
    • s 2024-05-11 16-30-509.jpg

      14,42 kB, 662×362, 36 mal angesehen
    • s 2024-05-11 16-56-321.jpg

      13,09 kB, 743×77, 38 mal angesehen

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Peter329“ ()

    Peter329 schrieb:

    Das mit der Klasse "Detail View" kling ja recht vielversprechend
    Ich hab nie von einer Klasse DetailView gesprochen.
    Ich hab auf ein Tutorial verllinkt, wo u.a. erklärt ist, was ein DetailView ist (bzw. letztendlich wie ich das definiere)
    Nee - ich hab garnet drauf verlinkt, ich hab gedacht, du kennst mein 4-Views-Tut schon.

    ErfinderDesRades schrieb:

    Ich hab nie von einer Klasse DetailView gesprochen.


    Na gut, ich hab halt danach gegoogelt (s. Anhang) ... so eine Klasse scheint es schon zu geben. Aber natürlich komme ich damit nicht zurecht.

    Dann nehme ich das mal so zur Kenntnis, dass man in einer DGV die Zellen nicht so ohne weiteres verbinden kann - das hilft mir dann ja schon weiter, wenn ich weiß, dass ich da nicht irgendwas Naheliegendes übersehen habe und ich halt eine handhabbare Umgehung nutzen muss.

    Vielen Dank an die Ratgeber und einen schönen Tag.

    Peter
    Bilder
    • s 2024-05-12 16-30-200.jpg

      26,45 kB, 784×142, 47 mal angesehen
    @Peter329
    Wenn es da nur um 2 Zeilen geht, wie du oben auf deinem Bildchen gezeigt hast, könntest du schon mit 2 DGV's was zusammenbasteln (z.B. mit doppelter ParentChild-View).
    Man könnte auch die Datensegmente aus einer Tabelle auf zwei DGV's aufteilen...

    k.A. ob das so bei dir passen könnte - mehr hast du uns von deinem Datenaufbau noch nicht gezeigt...
    Dateien

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „VB1963“ ()

    VB1963 schrieb:

    Wenn es da nur um 2 Zeilen geht, wie du oben auf deinem Bildchen gezeigt hast, könntest du schon mit 2 DGV's was zusammenbasteln (z.B. mit doppelter ParentChild-View).



    Das lässt mich ja wieder Hoffnung schöpfen.

    zitat: k.A. ob das so bei dir passen könnte - mehr hast du uns von deinem Datenaufbau noch nicht gezeigt...

    Ich habe mal ein realistisches zweizeiliges Layout eines Kontenblattes beigefügt.

    Wie man sieht, wird die in der zweiten Zeile die Spalte Buchungstext und Kategorie zusammengefügt.

    Vielleicht gibt es ja doch eine Möglichkeit so etwas mit vertrebarem Aufwand zu realsieren. Wenn nicht, dann muss ich halt damit leben ...

    LG
    Peter
    Bilder
    • s 2024-05-13 07-15-457.jpg

      40,74 kB, 873×193, 42 mal angesehen