将 TreeView 绑定到数据集 [英] Binding TreeView to DataSet

查看:25
本文介绍了将 TreeView 绑定到数据集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

I have a dataset I created from a Oracle Query. I get a datatable from a function and add it to dataset.

now I try to bind to treeview to the ds. My code Behind:

private void init_TreeView()
        { 

           //TreeViewItem parent = PM_TreeView.Items.Add("Requirements");
           DataTable dt  =  DataBases.RunQuery();
           dt.TableName = "REQ";
           DataSet ds = new DataSet();
           ds.Tables.Add(dt);
           //ds.Relations.Add("rsParentChild", ds.Tables["REQ"].Columns["RQ_REQ_ID"], ds.Tables["REQ"].Columns["RQ_FATHER_ID"]);
           var dataSet = ds;
           _rootNodes = dataSet.Tables["REQ"].DefaultView;
           _rootNodes.RowFilter = "RQ_FATHER_ID = -1";
           this.DataContext = this;
         }

and

private DataView _rootNodes;

and

public DataView RootNodes
{
    get { return _rootNodes; }
}

and my XAML:

<TreeView x:Name="PM_TreeView" ItemsSource="{Binding RootNodes}" HorizontalAlignment="Left" Height="445" Margin="44.847,68.285,0,0" VerticalAlignment="Top" Width="320" Foreground="{x:Null}" BorderBrush="{x:Null}" Background="#FFBBB6B6" FontFamily="Segoe UI" FontSize="13.333">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding rsParentChild}">
                    <TextBlock Text="{Binding NodeDescription}" />
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>

my datatable is:

RQ_REQ_ID RQ_FATHER_ID RQ_REQ_NAME
0         -1           REQ
1          0           QC11

but I get nothing on the treeview :)

10x in advance.

解决方案

I tried the following:

    <TreeView Name="tv" ItemsSource="{Binding Root}">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Parents}">
                <TextBlock Text="{Binding Value}"/>
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>

and within my window i have:

        DataSet ds = new DataSet("Data");

        DataTable t = new DataTable("Table");
        t.PrimaryKey = new DataColumn[] { t.Columns.Add("Key", typeof(int)) };
        t.Columns.Add("Value", typeof(string));
        t.Columns.Add("Father", typeof(int));
        ds.Tables.Add(t);

        ds.Relations.Add("Parents", t.Columns["Key"], t.Columns["Father"], false);

        t.Rows.Add(1, "First", -1);
        t.Rows.Add(2, "Second", -1);
        t.Rows.Add(3, "Third", 2);

        Root = new DataView(t);
        Root.RowFilter = "[Father]<0";
        t.DefaultView.RowFilter = "[Father] < 0";

        tv.DataContext = this;

where Root ist declared as:

public DataView Root { get; private set; }

The results are as expected.

这篇关于将 TreeView 绑定到数据集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆