MVVM树形连接数据库

 
1.	XAML代码
<Border Grid.Column="0" BorderThickness="1" Margin="10">
                <TreeView x:Name="chapterTree" Grid.Column="0" Grid.Row="1" ItemsSource="{Binding TreeNode}">
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="MouseDoubleClick">
                            <i:InvokeCommandAction Command="{Binding MenuNumberCommands}" CommandParameter="{Binding SelectedItem, ElementName=chapterTree}"/>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                    <TreeView.ItemTemplate>
                        <HierarchicalDataTemplate ItemsSource="{Binding Path=ChildNodes}">
                            <StackPanel>
                                <Label Content="{Binding Path=NodeName}"/>
                            </StackPanel>
                        </HierarchicalDataTemplate>
                    </TreeView.ItemTemplate>
                </TreeView>
            </Border>

2.	视图模型代码
首先从你的视图层布局代码里面根据树名获取到到你需要的树形,再LQ查询你要展示的树形数据把数据循环赋值到自己定义的TreeViewItem里并添加到树形上再递归树形节点。
        DataTable de;//表格  
        public TreeView ConsumptionDG; // 树形
        // 查询出最高级ID的内容,menuBigTypeID为null则表示最高级
        private void SelectTreeViews(UserControl uc)
        {
            UserControl myuc = new UserControl();
            myuc = uc;
            ConsumptionDG = myuc.FindName("chapterTree") as TreeView;
            //查询数据
            var list = (from tbMenuType in myModels.S_MenuType
                        select tbMenuType).ToList();
            de = ListToDataTable.ListToDataTablen(list);
            ConsumptionDG.Items.Clear();//清空树形
            if (de.Rows.Count > 0)
            {
                TreeViewItem item;
                DataRow[] dr = de.Select("menuBigTypeID is null");//从查询出来的数据中筛选出menuBigTypeID为null的数据,筛选条件
                foreach (DataRow dtitem in dr)
                {
                    item = new TreeViewItem();
                    item.Tag = dtitem["menuTypeID"].ToString();//主键id
                    item.Header = dtitem["menuBigType"].ToString();//名称
                    ConsumptionDG.Items.Add(item);//添加数据到树形上
                    item.IsExpanded = true;//树形是否展开
                    BingNode(item);
                }
            }
        }

  //递归树形节点
        private void BingNode(TreeViewItem item)
        {
//查询(menuBigTypeID=menuBigTypeID)子级等于父级的数据
            DataRow[] dr = de.Select("menuBigTypeID=" + Convert.ToInt32(item.Tag));
            if (dr != null || dr.Length > 0)
            {
                foreach (DataRow dtitem in dr)
                {
                    TreeViewItem child = new TreeViewItem();//申明
                    child.Tag = dtitem["menuTypeID"].ToString();//子级id
                    child.Header = dtitem["menuBigType"].ToString();//子级名称
                    item.Items.Add(child);//添加到树形上面去
                    item.IsExpanded = true;//树形是否展开
                    BingNode(child);//调用自己
                }
            }
        }
  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值