/// <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);
}
}
}