我设计一个Sivlerlight 的程序,想取得一个表的数据绑定到Treeview 控件上面,使用RIA service ,为了便于查看数据,我同时增加了一个Gridview 控件,现在是gridview 可以显示数据,我想先把treeview的根节点绑定,但是为什么不显示那? gridview 是可以显示数据的。
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.ServiceModel.DomainServices.Client; using org.Web; namespace org { public partial class MainPage : UserControl { public MainPage() { InitializeComponent (); this.bind (); //this.Loaded += new RoutedEventHandler ( MainPage_Loaded ); } void bind() { ORGservice dc = new ORGservice (); dataGrid1.ItemsSource = dc.View_oraganizations; dc.Load ( dc.GetView_oraganizationQuery () ); var sec = from c in dc.View_oraganizations where c.parentid.ToString()=="0" select c; List<View_oraganization> lst = sec.ToList (); if ( lst.Count > 0 ) { foreach ( View_oraganization nodeid_ in lst ) { TreeViewItem objTreeNode = new TreeViewItem (); objTreeNode.DataContext = nodeid_.Node; objTreeNode.Tag = nodeid_.tag; objTreeNode.Header = nodeid_.Node; treeView1.Items.Add ( objTreeNode ); } } } }
奇怪那
现在我验证了,一下,如果不使用 .edmx 和 domainservice.cs 而直接绑定list <> 类 是没问题的。
我断点了一下,确实没有数据赋给treeview ,但是为什么gridview 可以拿到数据那?
对照下面这种方式改一下,就几个地方:
xaml: <sdk:TreeView Width="400" Height="300" ItemsSource="{Binding}" ItemTemplate="{StaticResource NameTemplate}" x:Name="myTreeView" /> cs: DataGridTopic.ChildTopics.Add( new Topic("How to: Display and Configure Row Details in the DataGrid Control", 1)); Topics.Add(DataGridTopic); myTreeView.DataContext = Topics;
没明白 datagrid 没有实际意义,我就是看看数据,真实的目的是吧数据绑定到treeview。
@figofeng: 上面就是告诉你怎么把数据绑定到treeview上啊。
@荒野的呼唤: 绑定数据显示没问题,现在的问题是数据为空,我第一次使用 .edmx 和 domainservice.cs 来实现RIA 级别的数据通信,不知道为什么datagrid 可以获得数据为什么 treeview 不能。您有相关的经验吗?
@figofeng: 已经搞定了,不用ria 了改为 linq 2 sql & wcf 来实现了。