Announcement

Collapse
No announcement yet.

Mehrstufige DataRelations für TreeView und 2 DataGridViews

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mehrstufige DataRelations für TreeView und 2 DataGridViews

    Hallo

    Ich möchte in meinem Programm ein Explorer-Fenster nachbilden - allerdings mit einem TreeView auf der linken Seite und 2 DataGridViews auf der rechten Seite, wobei das obere vom TreeView-Element abhängig ist und das untere vom ausgewählten Element des oberen DataGridViews abhängt.

    Meine Vorgehensweise ist bisher folgende (auf Code verzichte ich hier, da dies kein Problem darstellt und nur verdeutlichen soll, was ich bisher tue):

    1) Abfrage, die 4 Select-Statements beinhaltet
    2) DataAdapter füllen (Verwenden von TableMappings)
    3) jeweils 2 DataColumns der Tabellen der Relation erstellen
    4) diese zur Relation zusammenfassen

    Somit habe ich 4 DataRelations. Bis hierher ist alles wunderbar.

    Jetzt folgt eine 3-fache foreach-Schleife, um

    1) die ParentNodes des TreeView zu füllen
    2) die ChildNodes des TreeView zu füllen
    3) das obere DataGridView in Abhängigkeit vom TreeView-Element füllen
    4) das untere DataGridview in Abhängigkeit vom 1.DGV-Element füllen

    Ich scheitere gerade an Schritt 3. Hier mein Ansatz:

    Code:
     foreach (DataRow rowHWTypes in ds.Tables["hwtypes"].Rows)
                {
                    //HW-Typen auslesen als ParentRows
                    TreeNode nodeHWTypes = new TreeNode();
                    nodeHWTypes.Text = rowHWTypes["hwtype"].ToString();
                    treeView.Nodes.Add(nodeHWTypes);
    
                    foreach (DataRow rowHardware in rowHWTypes.GetChildRows(ds.Relations["TypeToHW"]))
                    {
                        //Hardwarenamen auslesen aus den Childrows
                        TreeNode nodeHardware = new TreeNode();
                        nodeHardware.Text = rowHardware["hwname"].ToString();
                        nodeHWTypes.Nodes.Add(nodeHardware);
    
                        foreach (DataRow rowLicence in rowHardware.GetChildRows(ds.Relations["HWtoLicence"]))
                        {
    //zugehörige Lizenz in Abhängigkeit des ausgewählten Hardwarenamens
                            dgvLicence.DataSource = ds;
                            dgvLicence.DataMember = "licence";
    
                            //Software-DGV
    //zum Lizenzschlüssel zugehörige Software
                            DataRow rowSoftware;
                            rowSoftware = rowLicence.GetParentRow(ds.Relations["LicenceToSW"]); 
                        }
                    }
                }
    Die Reihenfolge lautet also: Hardwaretyp-Hardware-Lizenz-Software (so auch der Datenbankentwurf)

    Mein Problem ist also zuerst, dass ich nicht weiß, wie ich das obere DataGridView in Abhängigkeit vom TreeView-Element füllen kann (mit Hilfe der bisherigen Situation über DataRelations); dann: wie mache ich das untere DataGridView vom oberen abhängig.

    Vielleicht gibts auch ne Möglichkeit, das DataGridView zeilenweise zu füllen?

    Kann mir da jemand helfen?

    Danke und viele Grüße
    monik.
Working...
X