Vorangehensweiße aus 2 Datatables dynamischer Tabellen-View

  • VB.NET
  • .NET (FX) 4.0

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Tobias2107.

    Vorangehensweiße aus 2 Datatables dynamischer Tabellen-View

    Hallo,
    ich suche nach einen Lösugsweg für folgendes Problem.
    Momentan wird zur Kalkulation eine Excel Tabelle wie unten als Beispiel verwendet.

    Varianten
    Breite3
    Breite4
    Breite5
    Länge10
    Prozess1
    Prozess2
    Prozess2
    Länge20
    Prozess4
    Prozess2
    Prozess1
    Länge30
    Prozess3
    Prozess3
    Prozess2

    Es gibt für alle Produktfamilien solche Tabellen mit verschiedene Varianten als Spalten und Zeilen. In den Zellen sind Prozessnummern, welche bestimmte Prozessabläufe darstellen.

    In meinen vb Programm hab ich bereits ein Datenmodell mit welchen ich für die einzelnen Produktfamilien die Varianten für die Spalten + Zeilen + Prozess pflegen kann.

    Mein eigentliches Problem ist nun das Design. Es wird unbedingt die tabellarische Form gefordert. Später soll durch Klicken auf eine beliebige Zelle, die Prozessabläufe geladen werden.
    Die X-Varianten müssen Spalten darstellen, die Y-Varianten Zeilen.
    Pro Zelle steht ein Prozess.

    Fallen euch hierfür Ideen ein wie sowas umsetzbar ist? Vielleicht auch Alternativen zur Tabelle. Jedoch sollen in einen Blick für alle Varianten die dazugehörigen Prozesse darstellbar und änderbar sein.
    Wenn man's so umsetzt wie beim GUI-Anhang rechts unten, ist es für meinen Vorgesetzten zu unübersichtlich, da man nicht alle in einen Blick sieht.

    Schlüsselspalten etc kommen natürlich noch weg und die Displaymember werden auch noch angepasst.

    Vielen dank..

    /edit
    Vergessen zu erwähnen, dass es hierbei lediglich um das Design geht. Die Zuordnung zwischen Varianten und Prozesse wird wie im Gui Bild unten rechts gemacht.
    Es muss also die Tabelle daraus erstellt werden und per Klick auf die Zellen, sollten wiederrum die Daten des Prozesses in einer dgw geladen werden.
    Theoretisch gesehen ein ungebundenes Gridview, die Spalten/Zeilen aus den Werten von den beiden Varianten Datatables aufbauen und die zugeordneten Prozesse aus den unteren rechten dgw/Datatable einfügen. Aber dieser Weg ist Unfug.
    Gebeundenes Datatable obwohl es unterschiedlich viele Variantenspalten gibt, hört sich auch nach Unfug an. ;(
    Bilder
    • datset.JPG

      82,58 kB, 657×700, 58 mal angesehen
    • Gui.png

      18,7 kB, 1.807×935, 60 mal angesehen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Tobias2107“ ()

    Hallo,
    also im Prinzip hab ich folgende Datatables:
    DtProzesse - Prozesse
    DtProduktfamilien - die verschiedenen Produkte
    DtVariantenX - die Excel Columnsheader
    DtVariantenY - die Excel Rowheader
    DtVariantenProzesse - die Zuordnung pro Produktfamilie: welche X und Y Varianten-Kombination welchen Prozess braucht.

    Dafür ist die dgw im Gui-Bild unten recht.

    Ich wähle links meine Produktfamilie, rechts oben pro Produktfamilie kann ich mehrere X und Y Varianten eintragen.
    Und unten rechts, kann ich dann einzelne Kombinationen mit Hilfe der Comboboxen aus dem Varianten bilden. Für jede Kombination habe ich dann noch die dritte Comboboxen in welcher ich den jeweiligen Prozess definieren kann.
    Funktioniert auch soweit.

    Jedoch habe ich nun das Problem, dass ich für die Anwenderseite, eben die dynamische Tabelle erzeugen muss.

    Erstmal sollen für die Produktfamilie die Columns mit Hilfe der X-Varianten, und die Rows mit Hilfe der Y-Varianten erstellt werden. Anschließend sollen für die einzelnen Kombinationen aus X und Y wie in der dtProzessVarianten definiert, die Prozesse in den Zellen geschrieben werden. Ich denke, dass ich hierfür eine dynamische Datatable bauen muss, um die Tabelle in einen dgw anzuzeigen. Nur weiß ich nicht, wie ich das umsetzen kann.

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

    Jo, dafür gibts eiglich kein geeignetes Control.
    Man kann einem DGV quasi Gewalt antun, aber dabei gehen Databinding, Sortierbarkeit, Filterbarkeit verloren, Editierbarkeit wird zu einem sehr aufwändigen Zusatz-Feature.

    Man kann mit DGV.Rows=7 und DGV.Columns=8 die Anzahl der anzuzeigenden Zeilen und Spalten festlegen.
    Jo, und dann iwie den Datenbestand durchhühnern, und wie in einen Setzkasten in die richtigen Zellen die richtigen Werte eintragen.

    Wenn sich an den Daten was ändert die Methode dafür erneut aufrufen.
    Danke für die Antwort.
    Fällt dir vielleicht eine andere Darstellungsart ein, als die wo ich unten rechts bereits gebastelt habe? Die wichtigste Anforderung dafür ist eigentlich, dass man alle bereits zugeordneten Kombinationen auf einen Blick sieht und möglichst schnell und unkompliziert an den Prozess zugreifen kann.
    Ich kapier die Darstellung überhaupt nicht.

    Das mit den Zellen wo die herkommen, hab ich glaub verstanden - ich würde das als "Matrix-Sicht" bezeichnen. Weil X- und Y- Achse quasi eine Matrix aufspannen, deren Ausdehnung in beide Dimensionen variabel ist.
    Ist vermutlich eine ergonomische Darstellungsweise für das, was dein Chef sehen will, und weiss ich leider auch keine Alternative für.
    Das mit der Matrix-Sicht trifft es ganz gut.
    Ich versuch's nun so zu lösen, dass ich im DatasetDesigner für die Kombi-Datatable 10 Spalten hinzufüge, somit ergibt sich hier Limit an Varianten, was man durch sinnvolles clustern der Produktfamilien wieder kompensieren kann.

    Nun ist mein Plan, dass ich die 10 Spaltenheader, jeweils in den Datensätzen von den X-Varianten umbenenne und überschüssige Spalten ausblende.
    Bei den Rowheadern ähnlich. Den Columnstype setze ich auf allen 10 Spalten als Combobox mit Binding zum dtProzesse-Table.
    Somit kann ich typisiert alles im Dataset speichern und abrufen.

    Nun scheiterts nur an den Columnheader und Rowheader. Kann man diese dynamisch ändern und mit writexml/readxml vom Dataset mitgeben?
    Ich würd nicht versuchen, das Datenmodell so zu verbiegen, dass ein "Matrix-Krüppel" bei rauskommt (etwa mit fester Spaltenzahl, die meist zu hoch ist, und wenn sie zu niedrig ist, geht garnix meh).
    Imo passt eine Matrix nicht wirklich in ein relationales Datenmodell, daher würde ich wirklich am DGV rumfrickeln, bis ein Matrix-View bei rauskommt.

    Oder eben anders gesagt: Für ein Matrix-View gibts kein Control, dann muss man halt eins bauen.

    Relational gesehen ist ein Matrix-View ja eine m:n-Beziehung, also zwei Tabellen mit einer Mittler-Tabelle dazwischen:
    tb1->tbmid<-tb2
    Bei einem Matrix-View ist nun tb1 als Vertikale aufgetragen, tb2 als Horizontale, und in den Zellen erscheint jeweils ein Wert von tbmid.
    Also bräuchte man iwie ein Supergrid, welches quasi an 3 DataSources gleichzeitig gebunden ist.

    So wäre jdfs. die Richtung, die ich verfolgen würde.
    Aber ist aufwendig, und ich bin den Weg noch nicht gegangen, garantiere also nix.
    Auch möglich, dass dein Ansatz - oder noch ein anderer - einfacher zum Ziel führt.