wcf ria中主从表绑定treeview

本文介绍了使用Silverlight技术重构文档收集系统的实践经验,重点讲解了如何通过Entity Framework和Domain Service优化数据处理流程,以及如何利用TreeView组件实现多级菜单的动态加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     我本人接触siverlight时间不长,以前搞的东西太多太杂了,最近项目用到siverlight,而且siverlight体验很少一般啊。所以平时时间多,就用siverlight完善自己的文档收集系统了。

     以前简单的用siverlight页面做了个增删改查的页面,好像结构有些问题。最近重构一下代码,将版块单独设置成一个数据表来存放,以前都是xml存放,感觉太不方便了,现在将分类和版块设置为子主关系了。

      首先在服务器端生成entity framework和domainservice,metadata文件,本来可以不用生成元数据文件的,但是因为级联问题必须要生成了。

      treeview第一级菜单是版块菜单,第二级是分类菜单,写在grid的资源文件,然后用树调用。

<Grid.Resources>
            <sdk:HierarchicalDataTemplate x:Key="ChildTemplate">
                <TextBlock Text="{Binding Path=Name}"></TextBlock>
            </sdk:HierarchicalDataTemplate>
            <sdk:HierarchicalDataTemplate x:Key="RootTemplate" ItemsSource="{Binding Fenlei}"
                ItemTemplate="{StaticResource ChildTemplate}">
                <TextBlock Text="{Binding Path=Name}"></TextBlock>
            </sdk:HierarchicalDataTemplate>
        </Grid.Resources>

        <sdk:TreeView Height="403" HorizontalAlignment="Left" Name="treeView1"
            VerticalAlignment="Top" Width="192" ItemTemplate="{StaticResource RootTemplate}" />

这个树的构成不多说,有大牛的文章介绍,http://www.cnblogs.com/jv9/archive/2009/12/12/1621952.html

后台绑定就没法求人了

用在构造函数中用回调方法得到数据库中的版块实体,但是由于二级菜单是分类实体,虽然分类实体是版块实体的儿子吧,表述比较乱啊,所以在调用版块实体时应该关联分类实体,就需要用到include特性了。

所以在metedata中定义,

            [Include]
            public BankuaiInfo BankuaiInfo { get; set; }

在版块实体的查询中定义,

public IQueryable<BankuaiInfo> GetBankuaiInfos()
        {
            return this.ObjectContext.BankuaiInfos.Include("Fenlei");
        }

最后写页面回调函数,并绑定treeview
MyAppContext db = new MyAppContext();
        public FenleiEdit()
        {
            InitializeComponent();
            InitData();
        }
        void InitData()
        {

//这个和底下那句,是给页面加加载控件的,可以注释掉
            ((System.Windows.Controls.BusyIndicator)(App.Current.RootVisual)).IsBusy = true;
            db.Load(db.GetBankuaiInfosQuery(), LoadBehavior.RefreshCurrent, loadBankuaiInfo, null);
           
        }

 void loadBankuaiInfo(LoadOperation<BankuaiInfo> lo)
        {
            ObservableCollection<BankuaiInfo> forumList = new ObservableCollection<BankuaiInfo>(lo.Entities);
            this.treeView1.ItemsSource = forumList;
            ((System.Windows.Controls.BusyIndicator)(App.Current.RootVisual)).IsBusy = false;
        }

机子好卡,写到这里,以后再写一个对节点增删改查的。

转载于:https://www.cnblogs.com/zl40650194/archive/2011/08/22/2149310.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值