3 Stimmen

Wie macht man eine Gitteransicht zu einem untergeordneten Element einer Baumansicht in einer WPF-Anwendung

Ich versuche, ein Datengitter (oder Gridview) als untergeordnetes Element eines Treeviews aus der Datenbank zu befüllen. Ich bin in der Lage, Daten aus der DB in den Baum zu erhalten, aber es scheint nicht für die Datentabelle zu arbeiten. Hier ist mein Xaml-Code:

<Window x:Class="AttemptUsingHirarchichalData.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:data="clr-namespace:AttemptUsingHirarchichalData"
    xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit"
    Title="Window1" Height="300" Width="300">
<Window.Resources>
    <HierarchicalDataTemplate DataType="{x:Type data:Root}"
                              ItemsSource="{Binding Path=RootList}">
        <TextBlock Text="{Binding RootNode}"/>

    </HierarchicalDataTemplate>
    <HierarchicalDataTemplate DataType="{x:Type data:Nodes}"
                              ItemsSource="{Binding Path=ChildList}">

        <TextBlock Text="{Binding ChildNode}"/>
    </HierarchicalDataTemplate>
</Window.Resources>

<Grid>
    <TreeView Name="TreeView1">
        <TreeViewItem ItemsSource="{Binding Path=RootList}"
                      Header="{Binding RootNode}"/>
        <TreeViewItem ItemsSource="{Binding Path=dt_Age}"
                      Header="{Binding dt_Age}"/>
    </TreeView>

</Grid>

Mein Code sieht in etwa so aus:

InitializeComponent();

Root obj_Root = new Root();
obj_Root.RootNode = "RootNode";
obj_Root.RootList = new List<Nodes>();

Class1 obj_Class1 = new Class1();
DataTable dt_Age = obj_Class1.GetAgeInComboBox();

for (int i = 0; i < dt_Age.Rows.Count; i++)
{
    Nodes obj_AgeNode = new Nodes();
    obj_AgeNode.ChildNode = dt_Age.Rows[i][0].ToString();
    obj_Root.RootList.Add(obj_AgeNode);

    Class1 obj_class = new Class1();
    DataTable dt_name = new DataTable();
    dt_name = obj_class.GetName(Convert.ToInt32(dt_Age.Rows[i][0]));
    obj_AgeNode.ChildList = new List<Nodes>();
    //gridv
    for (int j = 0; j < dt_name.Rows.Count; j++)
    {
        Nodes obj_NameNode = new Nodes();
        obj_NameNode.ChildNode = dt_name.Rows[j][0].ToString();
        obj_AgeNode.ChildList.Add(obj_NameNode);
    }
}

TreeView1.DataContext = obj_Root;

In meiner Klassendatei ist dies ein Teil davon:

public class Nodes
{
    public string ChildNode { get; set; }
    public List<Nodes> ChildList { get; set; }
}

public class Root
{
    public string RootNode { get; set; }
    public List<Nodes> RootList { get; set; }
}

 public DataTable GetAgeInComboBox()
 {
     SqlDataAdapter da_Age = new SqlDataAdapter("select distinct Age from myfrstattemt", conn1);
     DataTable dt_Age = new DataTable();
     da_Age.Fill(dt_Age);
     return dt_Age;
 }

Bitte sagen Sie mir, wie ich es umsetzen kann. Ich bin neu auf diesem Gebiet, also entschuldigen Sie bitte meine dummen Fehler, und versuchen Sie bitte, in einfachen Worten zu erklären. Ich danke Ihnen.

Das ist es, was ich tatsächlich tun muss

0voto

serialhobbyist Punkte 4730

Es könnte sich lohnen, einen Blick darauf zu werfen diese Stelle von Marlon Grech.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X