예제 #1
0
        /// <summary>
        /// 构建ExtJS的树结构
        /// </summary>
        /// <param name="list">树列表数据</param>
        /// <param name="pid">父节点属性名称</param>
        /// <param name="id">当前节点属性名称</param>
        /// <param name="firstLevelFilter">获取第一层数据的过滤条件</param>
        /// <param name="leveltype">层数类型top,other</param>
        /// <param name="level">首次获取几层</param>
        /// <param name="sort">排序字段(list转为)</param>
        /// <returns></returns>
        public IList <TreeJSONBase> GetExtTreeList(IList <T> list, string pid, string id, string firstLevelFilter,
                                                   TreeDataLevelType leveltype, int level = 1000, string sort = "")
        {
            IList <TreeJSONBase> firstlevellist = new List <TreeJSONBase>();

            TreeJSONBase tempnode;

            var tp = typeof(T);
            var pi = tp.GetProperty(pid);

            if (pi == null)
            {
                throw new Exception(Resources.PidPropertyNameNotFind);
            }

            var dt = EntitiesToDataTable(list);

            if (dt == null)
            {
                return(firstlevellist);
            }

            //获得第一层的数据
            if (leveltype == TreeDataLevelType.TopLevel) //(!string.IsNullOrEmpty(firstLevelFilter))
            {
                var drs = dt.Select(firstLevelFilter, sort);

                foreach (var item in drs)
                {
                    tempnode = BuildTreeNode(item);
                    if (level > 1) //首次只加载一层,children为null
                    {
                        tempnode.children = new List <TreeJSONBase>();
                    }
                    tempnode.myLevel = 1;
                    //tempnode.expanded = true;
                    //tempnode.id = row[id].ToString();//基类控制id属性

                    firstlevellist.Add(tempnode);
                }

                if (firstlevellist.Count > 0)
                {
                    LoadSubTree(dt, firstlevellist, pid, id, level, pi.PropertyType, sort);
                }
            }
            else
            {
                foreach (DataRow row in dt.Rows)
                {
                    tempnode = BuildTreeNode(row);
                    firstlevellist.Add(tempnode);
                }
            }

            return(firstlevellist);
        }
예제 #2
0
        /// <summary>
        /// 构建ExtJS的树结构
        /// </summary>
        /// <param name="menudt">树列表数据</param>
        /// <param name="pid">父节点字段名称</param>
        /// <param name="id">当前节点字段名称</param>
        /// <param name="firstLevelFilter">获取第一层数据的过滤条件</param>
        /// <param name="leveltype">层数类型top,other</param>
        /// <param name="level">首次获取几层</param>
        /// <returns></returns>
        public IList <TreeJSONBase> GetExtTreeList(DataTable treedt, string pid, string id, string firstLevelFilter, string sort, TreeDataLevelType leveltype, int level = 1000)
        {
            IList <TreeJSONBase> firstlevellist = new List <TreeJSONBase>();

            if (treedt == null || string.IsNullOrWhiteSpace(pid) || string.IsNullOrWhiteSpace(id))
            {
                return(firstlevellist);
            }

            TreeJSONBase tempnode;

            //获得第一层的数据
            if (leveltype == TreeDataLevelType.TopLevel)//(!string.IsNullOrEmpty(firstLevelFilter))
            {
                DataRow[] drs = null;
                if (string.IsNullOrWhiteSpace(sort))
                {
                    drs = treedt.Select(firstLevelFilter);
                }
                else
                {
                    drs = treedt.Select(firstLevelFilter, sort);
                }

                foreach (DataRow row in drs)
                {
                    tempnode = BuildTreeNode(row);
                    if (level > 1)//首次只加载一层,children为null
                    {
                        tempnode.children = new List <TreeJSONBase>();
                    }
                    tempnode.myLevel = 1;
                    //tempnode.expanded = true;
                    //tempnode.id = row[id].ToString();//基类控制id属性
                    firstlevellist.Add(tempnode);
                }

                if (firstlevellist.Count > 0)
                {
                    LoadSubTree(treedt, firstlevellist, pid, id, level);
                }
            }
            else
            {
                foreach (DataRow dr in treedt.Rows)
                {
                    tempnode = BuildTreeNode(dr);

                    firstlevellist.Add(tempnode);
                }
            }
            return(firstlevellist);
        }
예제 #3
0
 public IList <TreeJSONBase> GetExtTreeList(DataTable treedt, string pid, string id, string firstLevelFilter, TreeDataLevelType leveltype, int level = 1000)
 {
     return(this.GetExtTreeList(treedt, pid, id, firstLevelFilter, string.Empty, leveltype, level));
 }
예제 #4
0
 public IList <TreeJSONBase> GetExtTreeList(IList <T> list, string pid, string id, string firstLevelFilter,
                                            TreeDataLevelType leveltype, int level = 1000)
 {
     return(GetExtTreeList(list, pid, id, firstLevelFilter, leveltype, level, ""));
 }
예제 #5
0
        ///// <summary>
        ///// 构建树节点,ColumnName为属性名
        ///// </summary>
        ///// <param name="row">具体数据行</param>
        ///// <returns>树的Json数据</returns>
        //private TreeJSONBase MyBuildTreeNode(DataRow row)
        //{
        //    var node = BuildTreeNode(row);

        //    //业务代码自己处理
        //    //if (string.IsNullOrWhiteSpace(node.PhId))
        //    //{
        //    //    node.PhId = node.id;
        //    //}

        //    return node;
        //}

        /// <summary>
        /// 构建ExtJS的树结构
        /// </summary>
        /// <param name="list">树列表数据</param>
        /// <param name="pid">父节点字段名称</param>
        /// <param name="id">当前节点字段名称</param>
        /// <param name="firstLevelFilter">获取第一层数据的过滤条件</param>
        /// <param name="leveltype">层数类型top,other</param>
        /// <param name="level">首次获取几层</param>
        /// <returns></returns>
        public IList <TreeJSONBaseCheck> GetExtTreeCheckList(IList <T> list, string pid, string id, string firstLevelFilter, TreeDataLevelType leveltype, int level = 1000)
        {
            var treeList = GetExtTreeList(list, pid, id, firstLevelFilter, leveltype, level);

            return(treeList.Cast <TreeJSONBaseCheck>().ToList());
        }
예제 #6
0
        public DataTable QueryData(string product, bool isusbuser, string usertype, Int64 orgID, Int64 userID, TreeDataLevelType level, string condition, bool rightFlag, string treeFilter)
        {
            DataTable querydt;
            DataTable alldt;

            if (treeFilter != "" && treeFilter != null)                                            //带过滤条件树的搜索
            {
                DataTable onlyLeafDt = dac.FilterTable(treeFilter);                                //已经被过滤的叶子节点
                DataTable sysAllDt   = dac.LoadTable(product, usertype);                           //系统功能完整树
                DataTable allDt      = FindRoot(onlyLeafDt, sysAllDt, treeFilter);                 //已经被过滤的完整树
                DataRow[] rows       = allDt.Select(string.Format("name like'%{0}%'", condition)); //从被过滤的完整树中,按搜索条件搜出的节点
                querydt = allDt.Clone();
                foreach (DataRow row in rows)
                {
                    querydt.Rows.Add(row.ItemArray); //已经被过滤的完整树,按搜索条件,取出的节点
                }
                //fg3.Select(string.Format("pid='{0}'", id)); name like '%"+condition+"%' "
                alldt = FindRoot(onlyLeafDt, allDt, treeFilter);//已经被过滤,已执行搜索条件的节点,找父节点构成完整树
            }
            else
            {
                querydt = dac.Query(product, condition, usertype, treeFilter);
                alldt   = dac.LoadTable(product, usertype);
            }
            DataTable finaldt = FindRoot(querydt, alldt, treeFilter);//普通搜索结果会展开,这里传treeFilter禁止展开

            finaldt.DefaultView.Sort = "seq";
            finaldt = RightkeyController(finaldt);
            this.DealLang(finaldt);
            if (!rightFlag)
            {
                return(finaldt);
            }
            //return finaldt;
            if (String.Compare(usertype, UserType.System, true) == 0)
            {
                return(SystemUserRightFilreate(finaldt));
            }
            DataTable dt = RigthFiltrateExt(usertype, finaldt, TreeDataLevelType.TopLevel);

            return(dt);
        }
예제 #7
0
        public DataTable RigthFiltrateExt(string usertype, DataTable menudt, TreeDataLevelType level)
        {
            rightdata.LoginConnectionStr = NG3.AppInfoBase.UserConnectString;
            //用户的菜单权限
            DataTable dtUserPageRights = rightdata.UserPageRightsDtExt; //cpcmInterface.GetAllPageRights(ocode, logid);
            //所有菜单权限
            DataTable dtAllPageRights = rightdata.AllPageRightsDt;      //cpcmInterface.GetAllPageRights();


            for (int i = menudt.Rows.Count - 1; i >= 0; i--)
            {
                DataRow dr = menudt.Rows[i];

                string norightcontrol = dr["norightcontrol"].ToString();
                if (norightcontrol == "1")
                {
                    if (show)
                    {
                        dr["name"] += "(不控制权限)";
                    }
                    continue;//不需要权限控制标记为:"1",跳过
                }

                //功能节点
                string functionnodeflag = dr["functionnode_flag"].ToString();
                string url       = dr["url"].ToString();
                string nodeid    = dr["id"].ToString();
                string apptype   = dr["apptype"].ToString().ToLower();
                string rightname = dr["rightname"].ToString();//权限名、权限号

                string moduleno = dr["moduleno"].ToString();
                //string rightid = dr["rightid"].ToString();
                string funcname = (dr["functionname"] == null || dr["functionname"] == DBNull.Value) ? string.Empty : dr["functionname"].ToString();

                Int64 rightkey = 0;
                Int64.TryParse(dr["rightkey"].ToString(), out rightkey);

                if ("ProjectOpportunityListManager" == rightname)
                {
                }

                //winform
                if (apptype == AppType.WinForm)
                {
                    if (rightkey == -1 || rightkey == 0)
                    {
                        if (show)
                        {
                            dr["name"] += "(win权限error)";
                        }
                        continue;
                    }
                    else
                    {
                        DataRow[] drs = dtUserPageRights.Select(string.Format("rightkey={0}", rightkey));
                        if (drs.Length == 0)
                        {
                            if (show)
                            {
                                dr["name"] += "(win无权限)";
                            }
                            else
                            {
                                dr.Delete();
                            }
                        }
                    }
                }
                else if (apptype == AppType.PB)//pb
                {
                    #region intfi网银控制,为提高性能,暂时先放在pb权限控制这一段

                    if (dr["ebankflg"] != null && dr["ebankflg"] != DBNull.Value && !string.IsNullOrEmpty(dr["ebankflg"].ToString()))
                    {
                        string ebankflg = dr["ebankflg"].ToString();

                        if (ebankflg.Equals("1"))
                        {
                            NGCOM  ngcom = new NGCOM();
                            string flag  = ngcom.GetEbank();
                            if (flag.Equals("0"))
                            {
                                if (show)
                                {
                                    dr[""] += "(无网银)";
                                    //ShowTitle(doc, node, "(无网银)");//测试用
                                }
                                else
                                {
                                    dr.Delete();
                                }
                                continue;
                            }
                        }
                    }

                    #endregion

                    if (rightkey == 0)
                    {
                        if (show)
                        {
                            dr["name"] += "(pb权限error)";
                        }
                        continue;
                    }
                    else if (rightkey == -1)
                    {
                        if (show)
                        {
                            dr["name"] += "(pb权限error)";
                        }
                        continue;
                    }
                    else
                    {
                        DataRow[] drs = dtUserPageRights.Select(string.Format("rightkey={0}", rightkey));
                        if (drs.Length == 0)
                        {
                            if (show)
                            {
                                dr["name"] += "(pb无权限)";
                            }
                            else
                            {
                                dr.Delete();
                            }
                        }
                    }
                }
                else if (apptype == AppType.WebForm || apptype == AppType.WebMvc)//web
                {
                    if (rightkey == -1 || rightkey == 0)
                    {
                        if (show)
                        {
                            dr["name"] += "(web权限error)";
                        }
                        continue;
                    }
                    else
                    {
                        DataRow[] drs = dtUserPageRights.Select(string.Format("rightkey={0}", rightkey));
                        if (drs.Length == 0)
                        {
                            if (show)
                            {
                                dr["name"] += "(web无权限)";
                            }
                            else
                            {
                                dr.Delete();
                            }
                        }
                    }
                }
            }

            menudt.AcceptChanges();
            if (level == TreeDataLevelType.TopLevel)
            {
                this.RemoveNode(menudt);
            }
            menudt.AcceptChanges();

            //DataRow[] dr = dt.Select("TabPageID = 'TabPageContractManage'");
            //DataRow[] dddd = menudt.Select("code = 990100120303");
            return(menudt);
        }
예제 #8
0
        /// <summary>
        /// 取得功能树数据
        /// </summary>
        /// <param name="product">产品名称</param>
        /// <param name="suite">套件</param>
        /// <param name="isusbuser">是否是usb用户</param>
        /// <param name="usertype">用户类型</param>
        /// <param name="ocode">组织号</param>
        /// <param name="logid">用户id</param>
        /// <param name="rightFlag">是否控制权限的标记位</param>
        ///  <param name="treeFilter">系统功能树过滤条件</param>
        /// <returns></returns>
        public DataTable GetMainTreeData(string product, string suite, bool isusbuser, string usertype, Int64 orgID, Int64 userID, string nodeid, TreeDataLevelType level, bool rightFlag, string treeFilter)
        {
            try
            {
                string logId = LogHelper <MainTreeRule> .StartMethodLog("LoadMenuData");

                DataTable menudt = new DataTable();
                if (treeFilter != "" && treeFilter != null)
                {
                    DataTable onlyLeafDt = dac.FilterTable(product, suite, nodeid, treeFilter);
                    DataTable allDt      = dac.LoadTable(product, usertype);
                    menudt = FindRoot(onlyLeafDt, allDt, treeFilter);
                }
                else
                {
                    menudt = dac.LoadMenuData(product, suite, nodeid).Copy();
                }
                LogHelper <MainTreeRule> .EndMethodLog(logId, 0);

                menudt = RightkeyController(menudt);
                this.DealLang(menudt);
                if (!rightFlag)
                {
                    return(menudt);
                }

                //系统管理员的一些特殊处理
                if (String.Compare(usertype, UserType.System, true) == 0)
                {
                    return(SystemUserRightFilreate(menudt));
                }
                //DataTable dt = menudt;
                string logIdRight = LogHelper <MainTreeRule> .StartMethodLog("LoadMenuRightService");

                DataTable dt = RigthFiltrateExt(usertype, menudt, level);
                LogHelper <MainTreeRule> .EndMethodLog(logIdRight, 0);

                return(dt);
            }
            catch (Exception ex)
            {
                Logger.Error(ex.StackTrace);
                throw ex;
            }
        }
예제 #9
0
        public DataTable QueryData(string product, bool isusbuser, string usertype, Int64 orgID, Int64 userID, TreeDataLevelType level, string condition)
        {
            DataTable querydt = dac.Query(product, condition);
            DataTable alldt   = dac.LoadTable(product);
            DataTable finaldt = GetQueryResult(querydt, alldt);

            finaldt.DefaultView.Sort = "seq";
            DataTable dt = RigthFiltrateExt(usertype, finaldt, TreeDataLevelType.LazyLevel);

            this.DealLang(dt);
            return(dt);
        }
예제 #10
0
        /// <summary>
        /// 取得功能树数据
        /// </summary>
        /// <param name="product">产品名称</param>
        /// <param name="suite">套件</param>
        /// <param name="isusbuser">是否是usb用户</param>
        /// <param name="usertype">用户类型</param>
        /// <param name="ocode">组织号</param>
        /// <param name="logid">用户id</param>
        /// <returns></returns>
        public DataTable GetMainTreeData(string product, string suite, bool isusbuser, string usertype, Int64 orgID, Int64 userID, string nodeid, TreeDataLevelType level)
        {
            DataTable menudt      = dac.LoadMenuData(product, suite, nodeid).Copy();
            string    sql         = string.Format(@"select * from fg3_menu where menutype='1'");
            DataTable sysTreeMenu = DbHelper.GetDataTable(sql);

            menudt.Columns.Add("originalsuite", typeof(string));
            foreach (DataRow dr in menudt.Rows)
            {
                DataRow[] sysDr = sysTreeMenu.Select(string.Format(@"code = '{0}'", dr["code"].ToString()));
                if (sysDr != null && sysDr.Length > 0)
                {
                    dr["originalsuite"] = sysDr[0]["suite"];
                }
            }
            menudt = RightkeyController(menudt);
            //DataTable dt = menudt;
            DataTable dt = RigthFiltrateExt(usertype, menudt, level);

            this.DealLang(dt);
            return(dt);

            //return menudt;
            //return RigthFiltrateExt(usertype, menudt);
        }
예제 #11
0
        /// <summary>
        /// 构建树
        /// </summary>
        /// <param name="treedt">树形数据</param>
        /// <param name="pid">父节点ID字段名</param>
        /// <param name="id">点ID字段名</param>
        /// <param name="firstLevelFilter">一级节点过滤条件</param>
        /// <param name="sort">排序字段</param>
        /// <param name="leveltype">加载类型:首次加载,懒载</param>
        /// <param name="level">加载层数</param>
        /// <returns></returns>
        public JArray GetTreeList(DataTable treedt, string pid, string id, string firstLevelFilter, string sort, TreeDataLevelType leveltype, int level = 1000)
        {
            JArray firstlevellist = new JArray();

            if (treedt == null || string.IsNullOrWhiteSpace(pid) || string.IsNullOrWhiteSpace(id))
            {
                return(firstlevellist);
            }

            JObject tempnode;

            //获得第一层的数据
            if (leveltype == TreeDataLevelType.TopLevel)//(!string.IsNullOrEmpty(firstLevelFilter))
            {
                DataRow[] drs = null;
                if (string.IsNullOrWhiteSpace(sort))
                {
                    drs = treedt.Select(firstLevelFilter);
                }
                else
                {
                    drs = treedt.Select(firstLevelFilter, sort);
                }

                foreach (DataRow row in drs)
                {
                    tempnode = BuildTreeNode(row);
                    if (level > 1)//首次只加载一层,children为null
                    {
                        //tempnode.children = new List<TreeJSONBase>();
                        tempnode.Add("children", new JArray());
                    }
                    //tempnode.myLevel = 1;
                    tempnode.Add("myLevel", 1);
                    firstlevellist.Add(tempnode);
                }

                if (firstlevellist.Count > 0)
                {
                    LoadSubTree(treedt, firstlevellist, pid, id, level);
                }
            }
            else
            {
                foreach (DataRow dr in treedt.Rows)
                {
                    tempnode = BuildTreeNode(dr);

                    #region 处理叶子节点标记
                    //树上下级节点的数据类型
                    bool isNum = false;
                    if (treedt.Columns[pid].DataType == typeof(Int64) || treedt.Columns[pid].DataType == typeof(Int64))
                    {
                        isNum = true;
                    }
                    string subFilter = pid + "='" + tempnode["id"].ToString() + "'";
                    if (isNum)
                    {
                        subFilter = pid + "=" + Convert.ToInt32(tempnode["id"].ToString()) + "";
                    }
                    DataRow[] rows = treedt.Select(subFilter);//找当前节点的子节点,无子节点,当前节点就是叶子节点
                    if (rows.Length == 0)
                    {
                        //subnode.leaf = true;
                        tempnode.Add("leaf", true);
                    }
                    else
                    {
                        //subnode.leaf = false;
                        tempnode.Add("leaf", false);
                    }
                    #endregion


                    firstlevellist.Add(tempnode);
                }
            }
            return(firstlevellist);
        }