将TreeView绑定到DataSet [英] Binding TreeView to DataSet
本文介绍了将TreeView绑定到DataSet的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个从Oracle查询创建的数据集.我从函数中获取一个数据表,并将其添加到数据集中.
I have a dataset I created from a Oracle Query. I get a datatable from a function and add it to dataset.
现在我尝试将Treeview绑定到ds.我的代码背后:
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;
}
和
private DataView _rootNodes;
和
public DataView RootNodes
{
get { return _rootNodes; }
}
和我的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>
我的数据表是:
RQ_REQ_ID RQ_FATHER_ID RQ_REQ_NAME
0 -1 REQ
1 0 QC11
但是在树视图上我什么也没得到:)
but I get nothing on the treeview :)
提前10倍.
推荐答案
我尝试了以下操作:
<TreeView Name="tv" ItemsSource="{Binding Root}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Parents}">
<TextBlock Text="{Binding Value}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
在我的窗口中,我有:
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;
其中 Root
ist声明为:
public DataView Root { get; private set; }
结果符合预期.
这篇关于将TreeView绑定到DataSet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文