四层treeview绑定sqlServer数据表数据源:TBModel和UIModel

本文介绍了如何在C#中将SQLServer数据表TBModel和UIModel的数据绑定到四层结构的TreeView控件。内容涉及查询数据、处理数据以适应TreeView的特殊显示需求。
摘要由CSDN通过智能技术生成
    /// <summary>
    /// 初始化树形控件
    /// </summary>
    private void InitializeTreeView()
    {

-----以下是查询相关数据,把数据准备好

        #region TBModel数据源:一般建议绑定TBModel作为数据源,使用TBModel会非常的方便,
        不仅仅是在查询绑定的时候不需要写sql语句,甚至在保存的时候也非常的容易。
        //菜单
        //var resultMenuList = new List<SM_MenuTBModel>();
        //if (LoginInfoDAX.UserID == SysConst.SUPER_ADMIN)
        //{
        //    //_bll.QueryForList<MenuUIModel, MenuUIModel>(new MenuUIModel
        //    //{
        //    //    WHERE_Menu_IsValid = true,
        //    //}, resultMenuList);
        //    _bll.QueryForList(new SM_MenuTBModel()
        //    {
        //        WHERE_Menu_IsValid = true
        //    }, resultMenuList);

        //}
        //菜单分组
        //var resultMenuGroupList = new List<SM_MenuGroupTBModel>();
        //if (LoginInfoDAX.UserID == SysConst.SUPER_ADMIN)
        //{
        //    #region SuperAdmin,菜单分组列表为所有分组列表

        //    _bll.QueryForList(new SM_MenuGroupTBModel()
        //    {
        //        WHERE_MenuG_IsValid = true
        //    }, resultMenuGroupList);

        //    #endregion
        //}
        //菜单明细
        //var resultMenuDetailList = new List<SM_MenuDetailTBModel>();
        //if (LoginInfoDAX.UserID == SysConst.SUPER_ADMIN)
        //{
        //    #region SuperAdmin,菜单明细列表为所有明细列表

        //    _bll.QueryForList(new SM_MenuDetailTBModel()
        //    {
        //        WHERE_MenuD_IsValid = true
        //    }, resultMenuDetailList);

        //    #endregion
        //}
        //菜单明细动作
        //var resultMenuActionList = new List<SM_MenuDetailActionTBModel>();
        //if (LoginInfoDAX.UserID == SysConst.SUPER_ADMIN)
        //{
        //    #region SuperAdmin,菜单明细动作列表为所有动作列表

        //    _bll.QueryForList(new SM_MenuDetailActionTBModel()
        //    {
        //        MA_IsValid = true
        //    }, resultMenuActionList);

        //    #endregion
        //}
        #endregion

        #region UIModel数据源:当我们需要在界面上显示一个当前数据源表内没有的字段,就需要使用UIModel作为数据源,相对应的,SQL语句的查询结果决定我们绑定的数据源内容,一旦绑定的数据与你的预期不符,要么数据源绑定错误,要么sql语句错误。
        //菜单
        var resultMenuList = new List<MenuUIModel>();
        if (LoginInfoDAX.UserID == SysConst.SUPER_ADMIN)
        {
            _bll.QueryForList(SQLID.SM_RoleManager_SQL07, new MenuUIModel
            {
                WHERE_Menu_IsValid = true,
            }, resultMenuList);

        }
        //菜单分组
        var resultMenuGroupList = new List<MenuGroupUIModel>();
        if (LoginInfoDAX.UserID == SysConst.SUPER_ADMIN)
        {
            #region SuperAdmin,菜单分组列表为所有分组列表

            _bll.QueryForList(SQLID.SM_RoleManager_SQL08, new MenuGroupUIModel()
            {
                WHERE_MenuG_IsValid = true
            }, resultMenuGroupList);

            #endregion
        }
        //菜单明细
        var resultMenuDetailList = new List<MenuDetailUIModel>();
        if (LoginInfoDAX.UserID == SysConst.SUPER_ADMIN)
        {
            #region SuperAdmin,菜单明细列表为所有明细列表

            _bll.QueryForList(SQLID.SM_RoleManager_SQL09, new MenuDetailUIModel()
            {
                WHERE_MenuD_IsValid = true
            }, resultMenuDetailList);

            #endregion
        }
        //菜单动作
        var resultMenuActionList = new List<MenuDetailActionUIModel>();
        if (LoginInfoDAX.UserID == SysConst.SUPER_ADMIN)
        {
            #region SuperAdmin,菜单明细动作列表为所有动作列表

            _bll.QueryForList(SQLID.SM_RoleManager_SQL10, new MenuDetailActionUIModel()
            {
                //Text = loopMenuATB.MA_Action_Name,
                MA_IsValid = true
            }, resultMenuActionList);

            #endregion
        }
        #endregion
        

        //清空节点
        tvRole.Nodes.Clear();

-------在这里,我们需要用到之前查询的数据,由于treeview这个控件的特殊性(一条叶节点一直走到头才会走下一个叶节点),我们只需要把准备好的数据给它就好了

        //分组数据
        _menuGList_Base = resultMenuGroupList;
        
        //菜单数量>0
        if (resultMenuList.Count > 0)
        {
            明细数据
            _menuDList_Base = resultMenuDetailList;
           
            动作数据
            _menuAList_Base = resultMenuActionList;
            
            foreach (var loopMenu in resultMenuList)
            {
                var groupNode = new TreeNode
                {
                    Text = loopMenu.Menu_Name,
                    Tag = loopMenu.Menu_ID
                };
                //菜单分组
                var menuGList = _menuGList_Base.Where(t => t.MenuG_Menu_ID == loopMenu.Menu_ID).ToList();
                //菜单子级数据
                MenuChild(groupNode, menuGList);
                tvRole.Nodes.Add(groupNode);
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值