Esempio n. 1
0
        /// <summary>
        ///     Translates an invocation expression, e.g. "Math.Max(10, 5)".
        /// </summary>
        public override StringBuilder VisitInvocationExpression(InvocationExpression invocationExpr)
        {
            var result = new StringBuilder();

            var methodDef = invocationExpr.Annotation <MethodDefinition>() ??
                            invocationExpr.Annotation <MethodReference>().Resolve();

            var methodName = methodDef.Name;
            var declType   = methodDef.DeclaringType.ToType();

            var args = JoinArgs(invocationExpr.Arguments).ToString();

            // map method if it's a mathematical method or
            // map method if it's a xSLShader class' method
            if (ShaderMapping.Types.ContainsKey(declType))
            {
                if (ShaderMapping.Methods.ContainsKey(methodName))
                {
                    var mappedName = ShaderMapping.Methods[methodName];
                    return(result.Method(mappedName, args));
                }
            }

            // otherwise just call the method
            if (declType != typeof(xSLShader))
            {
                RefMethods.Add(methodDef);
            }

            return(result.Method(methodDef.Name, args));
        }
Esempio n. 2
0
        /// <summary>
        /// 实体初始化
        /// </summary>
        /// <returns></returns>
        public string Entity_Init()
        {
            try
            {
                //是否是空白记录.
                bool isBlank = DataType.IsNullOrEmpty(this.PKVal);
                //if (DataType.IsNullOrEmpty(this.PKVal) == true)
                //    return "err@主键数据丢失,不能初始化En.htm";

                //初始化entity.
                string enName = this.EnName;
                Entity en     = null;
                if (DataType.IsNullOrEmpty(enName) == true)
                {
                    if (DataType.IsNullOrEmpty(this.EnsName) == true)
                    {
                        return("err@类名没有传递过来");
                    }
                    Entities ens = ClassFactory.GetEns(this.EnsName);
                    en = ens.GetNewEntity;
                }
                else
                {
                    en = ClassFactory.GetEn(this.EnName);
                }

                if (en == null)
                {
                    return("err@参数类名不正确.");
                }

                //获得描述.
                Map map = en.EnMap;

                string pkVal = this.PKVal;

                if (isBlank == false)
                {
                    en.PKVal = pkVal;
                    en.RetrieveFromDBSources();
                }

                //定义容器.
                DataSet ds = new DataSet();

                //把主数据放入里面去.
                DataTable dtMain = en.ToDataTableField("MainTable");
                ds.Tables.Add(dtMain);

                #region 增加 上方法.
                DataTable dtM = new DataTable("dtM");
                dtM.Columns.Add("No");
                dtM.Columns.Add("Title");
                dtM.Columns.Add("Tip");
                dtM.Columns.Add("Visable");

                dtM.Columns.Add("Url");
                dtM.Columns.Add("Target");
                dtM.Columns.Add("Warning");
                dtM.Columns.Add("RefMethodType");
                dtM.Columns.Add("GroupName");
                dtM.Columns.Add("W");
                dtM.Columns.Add("H");
                dtM.Columns.Add("Icon");
                dtM.Columns.Add("IsCanBatch");
                dtM.Columns.Add("RefAttrKey");
                //判断Func是否有参数
                dtM.Columns.Add("FunPara");


                RefMethods rms = map.HisRefMethods;
                foreach (RefMethod item in rms)
                {
                    string myurl = "";
                    if (item.RefMethodType == RefMethodType.LinkeWinOpen ||
                        item.RefMethodType == RefMethodType.RightFrameOpen ||
                        item.RefMethodType == RefMethodType.LinkModel)
                    {
                        try
                        {
                            myurl = item.Do(null) as string;
                            if (myurl == null)
                            {
                                continue;
                            }
                        }
                        catch (Exception ex)
                        {
                            throw new Exception("err@系统错误:根据方法名生成url出现错误:@" + ex.Message + "@" + ex.InnerException + " @方法名:" + item.ClassMethodName);
                        }
                    }
                    else
                    {
                        myurl = "../RefMethod.htm?Index=" + item.Index + "&EnName=" + en.ToString() + "&EnsName=" + en.GetNewEntities.ToString() + "&PKVal=" + this.PKVal;
                    }

                    DataRow dr = dtM.NewRow();

                    dr["No"]      = item.Index;
                    dr["Title"]   = item.Title;
                    dr["Tip"]     = item.ToolTip;
                    dr["Visable"] = item.Visable;
                    dr["Warning"] = item.Warning;


                    dr["RefMethodType"] = (int)item.RefMethodType;
                    dr["RefAttrKey"]    = item.RefAttrKey;
                    dr["Url"]           = myurl;
                    dr["W"]             = item.Width;
                    dr["H"]             = item.Height;
                    dr["Icon"]          = item.Icon;
                    dr["IsCanBatch"]    = item.IsCanBatch;
                    dr["GroupName"]     = item.GroupName;
                    Attrs attrs = item.HisAttrs;
                    if (attrs.Count == 0)
                    {
                        dr["FunPara"] = "false";
                    }
                    else
                    {
                        dr["FunPara"] = "true";
                    }

                    dtM.Rows.Add(dr); //增加到rows.
                }
                #endregion 增加 上方法.

                #region 加入一对多的实体编辑
                AttrsOfOneVSM oneVsM = en.EnMap.AttrsOfOneVSM;
                string        sql    = "";
                int           i      = 0;
                if (oneVsM.Count > 0)
                {
                    foreach (AttrOfOneVSM vsM in oneVsM)
                    {
                        //判断该dot2dot是否显示?
                        Entity enMM = vsM.EnsOfMM.GetNewEntity;
                        enMM.SetValByKey(vsM.AttrOfOneInMM, this.PKVal);
                        if (enMM.HisUAC.IsView == false)
                        {
                            continue;
                        }
                        DataRow dr = dtM.NewRow();
                        dr["No"] = enMM.ToString();
                        // dr["GroupName"] = vsM.GroupName;
                        if (en.PKVal != null)
                        {
                            //判断模式.
                            string url = "";
                            if (vsM.Dot2DotModel == Dot2DotModel.TreeDept)
                            {
                                //url = "Dot2DotTreeDeptModel.htm?EnsName=" + en.GetNewEntities.ToString() + "&EnName=" + this.EnName + "&AttrKey=" + vsM.EnsOfMM.ToString();
                                //  url = "Branches.htm?EnName=" + en.ToString() + "&AttrKey=" + vsM.EnsOfMM.ToString();

                                url = "Branches.htm?EnName=" + this.EnName + "&Dot2DotEnsName=" + vsM.EnsOfMM.ToString();
                                // url += "&PKVal=" + en.PKVal;
                                url += "&Dot2DotEnName=" + vsM.EnsOfMM.GetNewEntity.ToString(); //存储实体类.
                                url += "&AttrOfOneInMM=" + vsM.AttrOfOneInMM;                   //存储表那个与主表关联. 比如: FK_Node
                                url += "&AttrOfMInMM=" + vsM.AttrOfMInMM;                       //dot2dot存储表那个与实体表.  比如:FK_Station.
                                url += "&EnsOfM=" + vsM.EnsOfM.ToString();                      //默认的B实体分组依据.  比如:FK_Station.
                                url += "&DefaultGroupAttrKey=" + vsM.DefaultGroupAttrKey;       //默认的B实体分组依据.
                            }
                            else if (vsM.Dot2DotModel == Dot2DotModel.TreeDeptEmp)
                            {
                                //   url = "Dot2DotTreeDeptEmpModel.htm?EnsName=" + en.GetNewEntities.ToString() + "&EnName=" + this.EnName + "&AttrKey=" + vsM.EnsOfMM.ToString();
                                // url = "Dot2Dot.aspx?EnsName=" + en.GetNewEntities.ToString() + "&EnName=" + this.EnName + "&AttrKey=" + vsM.EnsOfMM.ToString();
                                url = "BranchesAndLeaf.htm?EnName=" + this.EnName + "&Dot2DotEnsName=" + vsM.EnsOfMM.ToString();
                                //   url += "&PKVal=" + en.PKVal;
                                url += "&Dot2DotEnName=" + vsM.EnsOfMM.GetNewEntity.ToString(); //存储实体类.
                                url += "&AttrOfOneInMM=" + vsM.AttrOfOneInMM;                   //存储表那个与主表关联. 比如: FK_Node
                                url += "&AttrOfMInMM=" + vsM.AttrOfMInMM;                       //dot2dot存储表那个与实体表.  比如:FK_Station.
                                url += "&EnsOfM=" + vsM.EnsOfM.ToString();                      //默认的B实体分组依据.  比如:FK_Station.
                                url += "&DefaultGroupAttrKey=" + vsM.DefaultGroupAttrKey;       //默认的B实体分组依据.  比如:FK_Station.
                                //url += "&RootNo=" + vsM.RootNo; //默认的B实体分组依据.  比如:FK_Station.
                            }
                            else
                            {
                                // url = "Dot2Dot.aspx?EnsName=" + en.GetNewEntities.ToString() + "&EnName=" + this.EnName + "&AttrKey=" + vsM.EnsOfMM.ToString();
                                url  = "Dot2Dot.htm?EnName=" + this.EnName + "&Dot2DotEnsName=" + vsM.EnsOfMM.ToString(); //比如:BP.WF.Template.NodeStations
                                url += "&AttrOfOneInMM=" + vsM.AttrOfOneInMM;                                             //存储表那个与主表关联. 比如: FK_Node
                                url += "&AttrOfMInMM=" + vsM.AttrOfMInMM;                                                 //dot2dot存储表那个与实体表.  比如:FK_Station.
                                url += "&EnsOfM=" + vsM.EnsOfM.ToString();                                                //默认的B实体.   //比如:BP.Port.Stations
                                url += "&DefaultGroupAttrKey=" + vsM.DefaultGroupAttrKey;                                 //默认的B实体分组依据.  比如:FK_Station.

                                //+"&RefAttrEnsName=" + vsM.EnsOfM.ToString();
                                //url += "&RefAttrKey=" + vsM.AttrOfOneInMM + "&RefAttrEnsName=" + vsM.EnsOfM.ToString();
                            }

                            dr["Url"]  = url + "&" + en.PK + "=" + en.PKVal + "&PKVal=" + en.PKVal;
                            dr["Icon"] = "../Img/M2M.png";
                        }

                        dr["W"]             = "900";
                        dr["H"]             = "500";
                        dr["RefMethodType"] = (int)RefMethodType.RightFrameOpen;


                        // 获得选择的数量.
                        try
                        {
                            sql = "SELECT COUNT(*) as NUM FROM " + vsM.EnsOfMM.GetNewEntity.EnMap.PhysicsTable + " WHERE " + vsM.AttrOfOneInMM + "='" + en.PKVal + "'";
                            i   = DBAccess.RunSQLReturnValInt(sql);
                        }
                        catch
                        {
                            sql = "SELECT COUNT(*) as NUM FROM " + vsM.EnsOfMM.GetNewEntity.EnMap.PhysicsTable + " WHERE " + vsM.AttrOfOneInMM + "=" + en.PKVal;
                            try
                            {
                                i = DBAccess.RunSQLReturnValInt(sql);
                            }
                            catch
                            {
                                vsM.EnsOfMM.GetNewEntity.CheckPhysicsTable();
                            }
                        }
                        dr["Title"] = vsM.Desc + "(" + i + ")";
                        dtM.Rows.Add(dr);
                    }
                }
                #endregion 增加 一对多.

                #region 从表
                EnDtls enDtls = en.EnMap.Dtls;
                foreach (EnDtl enDtl in enDtls)
                {
                    //判断该dtl是否要显示?
                    Entity myEnDtl = enDtl.Ens.GetNewEntity;       //获取他的en
                    myEnDtl.SetValByKey(enDtl.RefKey, this.PKVal); //给refpk赋值.
                    if (myEnDtl.HisUAC.IsView == false)
                    {
                        continue;
                    }

                    DataRow dr = dtM.NewRow();
                    //string url = "Dtl.aspx?EnName=" + this.EnName + "&PK=" + this.PKVal + "&EnsName=" + enDtl.EnsName + "&RefKey=" + enDtl.RefKey + "&RefVal=" + en.PKVal.ToString() + "&MainEnsName=" + en.ToString() ;
                    string url = "Dtl.htm?EnName=" + this.EnName + "&PK=" + this.PKVal + "&EnsName=" + enDtl.EnsName + "&RefKey=" + enDtl.RefKey + "&RefVal=" + en.PKVal.ToString() + "&MainEnsName=" + en.ToString();
                    try
                    {
                        i = DBAccess.RunSQLReturnValInt("SELECT COUNT(*) FROM " + enDtl.Ens.GetNewEntity.EnMap.PhysicsTable + " WHERE " + enDtl.RefKey + "='" + en.PKVal + "'");
                    }
                    catch
                    {
                        try
                        {
                            i = DBAccess.RunSQLReturnValInt("SELECT COUNT(*) FROM " + enDtl.Ens.GetNewEntity.EnMap.PhysicsTable + " WHERE " + enDtl.RefKey + "=" + en.PKVal);
                        }
                        catch
                        {
                            enDtl.Ens.GetNewEntity.CheckPhysicsTable();
                        }
                    }

                    dr["No"]        = enDtl.EnsName;
                    dr["Title"]     = enDtl.Desc + "(" + i + ")";
                    dr["Url"]       = url;
                    dr["GroupName"] = enDtl.GroupName;

                    dr["RefMethodType"] = (int)RefMethodType.RightFrameOpen;

                    dtM.Rows.Add(dr);
                }
                #endregion 增加 从表.

                ds.Tables.Add(dtM);



                return(BP.Tools.Json.ToJson(ds));
            }
            catch (Exception ex)
            {
                return("err@Entity_Init错误:" + ex.Message);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 实体初始化
        /// </summary>
        /// <returns></returns>
        public string EntityOnly_Init()
        {
            try
            {
                //是否是空白记录.
                bool isBlank = DataType.IsNullOrEmpty(this.PKVal);

                //初始化entity.
                string enName = this.EnName;
                Entity en     = null;
                if (isBlank == true)
                {
                    if (DataType.IsNullOrEmpty(this.EnsName) == true)
                    {
                        return("err@类名没有传递过来");
                    }
                    Entities ens = ClassFactory.GetEns(this.EnsName);
                    en = ens.GetNewEntity;
                }
                else
                {
                    en = ClassFactory.GetEn(this.EnName);
                }

                if (en == null)
                {
                    return("err@参数类名不正确.");
                }

                //获得描述.
                Map    map   = en.EnMap;
                string pkVal = this.PKVal;
                if (isBlank == false)
                {
                    en.PKVal = pkVal;
                    int i = en.RetrieveFromDBSources();
                    if (i == 0)
                    {
                        return("err@数据[" + map.EnDesc + "]主键为[" + pkVal + "]不存在,或者没有保存。");
                    }
                }
                else
                {
                    foreach (Attr attr in en.EnMap.Attrs)
                    {
                        en.SetValByKey(attr.Key, attr.DefaultVal);
                    }

                    //设置默认的数据.
                    en.ResetDefaultVal();

                    en.SetValByKey("RefPKVal", this.RefPKVal);

                    //自动生成一个编号.
                    if (en.IsNoEntity == true && en.EnMap.IsAutoGenerNo == true)
                    {
                        en.SetValByKey("No", en.GenerNewNoByKey("No"));
                    }
                }


                //定义容器.
                DataSet ds = new DataSet();

                //定义Sys_MapData.
                MapData md = new MapData();
                md.No   = this.EnName;
                md.Name = map.EnDesc;

                //附件类型.
                md.SetPara("BPEntityAthType", (int)map.HisBPEntityAthType);

                #region 加入权限信息.
                //把权限加入参数里面.
                if (en.HisUAC.IsInsert)
                {
                    md.SetPara("IsInsert", "1");
                }
                if (en.HisUAC.IsUpdate)
                {
                    md.SetPara("IsUpdate", "1");
                }
                if (isBlank == true)
                {
                    if (en.HisUAC.IsDelete)
                    {
                        md.SetPara("IsDelete", "0");
                    }
                }
                else
                {
                    if (en.HisUAC.IsDelete)
                    {
                        md.SetPara("IsDelete", "1");
                    }
                }
                #endregion 加入权限信息.


                ds.Tables.Add(md.ToDataTableField("Sys_MapData"));

                //把主数据放入里面去.
                DataTable dtMain = en.ToDataTableField("MainTable");
                ds.Tables.Add(dtMain);

                #region 增加上分组信息.
                EnCfg  ec         = new EnCfg(this.EnName);
                string groupTitle = ec.GroupTitle;
                if (DataType.IsNullOrEmpty(groupTitle) == true)
                {
                    groupTitle = "@" + en.PK + ",基本信息," + map.EnDesc + "";
                }

                //增加上.
                DataTable dtGroups = new DataTable("Sys_GroupField");
                dtGroups.Columns.Add("OID");
                dtGroups.Columns.Add("Lab");
                dtGroups.Columns.Add("Tip");
                dtGroups.Columns.Add("CtrlType");
                dtGroups.Columns.Add("CtrlID");

                string[] strs = groupTitle.Split('@');
                foreach (string str in strs)
                {
                    if (DataType.IsNullOrEmpty(str))
                    {
                        continue;
                    }

                    string[] vals = str.Split('=');
                    if (vals.Length == 1)
                    {
                        vals = str.Split(',');
                    }

                    if (vals.Length == 0)
                    {
                        continue;
                    }

                    DataRow dr = dtGroups.NewRow();
                    dr["OID"] = vals[0];
                    dr["Lab"] = vals[1];
                    if (vals.Length == 3)
                    {
                        dr["Tip"] = vals[2];
                    }
                    dtGroups.Rows.Add(dr);
                }
                ds.Tables.Add(dtGroups);

                #endregion 增加上分组信息.

                #region 字段属性.
                MapAttrs  attrs        = en.EnMap.Attrs.ToMapAttrs;
                DataTable sys_MapAttrs = attrs.ToDataTableField("Sys_MapAttr");
                sys_MapAttrs.Columns.Remove(MapAttrAttr.GroupID);
                sys_MapAttrs.Columns.Add("GroupID");


                //sys_MapAttrs.Columns[MapAttrAttr.GroupID].DataType = typeof(string); //改变列类型.

                //给字段增加分组.
                string currGroupID = "";
                foreach (DataRow drAttr in sys_MapAttrs.Rows)
                {
                    if (currGroupID.Equals("") == true)
                    {
                        currGroupID = dtGroups.Rows[0]["OID"].ToString();
                    }

                    string keyOfEn = drAttr[MapAttrAttr.KeyOfEn].ToString();
                    foreach (DataRow drGroup in dtGroups.Rows)
                    {
                        string field = drGroup["OID"].ToString();
                        if (keyOfEn.Equals(field))
                        {
                            currGroupID = field;
                        }
                    }
                    drAttr[MapAttrAttr.GroupID] = currGroupID;
                }
                ds.Tables.Add(sys_MapAttrs);
                #endregion 字段属性.

                #region 加入扩展属性.
                MapExts   mapExts    = new MapExts(this.EnName + "s");
                DataTable Sys_MapExt = mapExts.ToDataTableField("Sys_MapExt");
                ds.Tables.Add(Sys_MapExt);
                #endregion 加入扩展属性.

                #region 把外键与枚举放入里面去.

                //加入外键.
                foreach (DataRow dr in sys_MapAttrs.Rows)
                {
                    string uiBindKey = dr["UIBindKey"].ToString();
                    string lgType    = dr["LGType"].ToString();
                    if (lgType.Equals("2") == false)
                    {
                        continue;
                    }

                    string UIIsEnable = dr["UIVisible"].ToString();

                    if (UIIsEnable.Equals("0") == true)
                    {
                        continue;
                    }

                    if (DataType.IsNullOrEmpty(uiBindKey) == true)
                    {
                        string myPK = dr["MyPK"].ToString();
                        /*如果是空的*/
                        //   throw new Exception("@属性字段数据不完整,流程:" + fl.No + fl.Name + ",节点:" + nd.NodeID + nd.Name + ",属性:" + myPK + ",的UIBindKey IsNull ");
                    }

                    // 检查是否有下拉框自动填充。
                    string keyOfEn    = dr["KeyOfEn"].ToString();
                    string fk_mapData = dr["FK_MapData"].ToString();

                    // 判断是否存在.
                    if (ds.Tables.Contains(uiBindKey) == true)
                    {
                        continue;
                    }

                    DataTable dt = BP.Sys.PubClass.GetDataTableByUIBineKey(uiBindKey);
                    dt.TableName = keyOfEn;

                    ds.Tables.Add(dt);
                }

                //加入sql模式的外键.
                foreach (Attr attr in en.EnMap.Attrs)
                {
                    if (attr.IsRefAttr == true)
                    {
                        continue;
                    }

                    if (DataType.IsNullOrEmpty(attr.UIBindKey) || attr.UIBindKey.Length <= 10)
                    {
                        continue;
                    }

                    if (attr.UIIsReadonly == true)
                    {
                        continue;
                    }

                    if (attr.UIBindKey.Contains("SELECT") == true || attr.UIBindKey.Contains("select") == true)
                    {
                        /*是一个sql*/
                        string sqlBindKey = attr.UIBindKey.Clone() as string;
                        sqlBindKey = BP.WF.Glo.DealExp(sqlBindKey, en, null);

                        DataTable dt = DBAccess.RunSQLReturnTable(sqlBindKey);
                        dt.TableName = attr.Key;

                        //@杜. 翻译当前部分.
                        if (SystemConfig.AppCenterDBType == DBType.Oracle)
                        {
                            dt.Columns["NO"].ColumnName   = "No";
                            dt.Columns["NAME"].ColumnName = "Name";
                        }

                        ds.Tables.Add(dt);
                    }
                }

                //加入枚举的外键.
                string enumKeys = "";
                foreach (Attr attr in map.Attrs)
                {
                    if (attr.MyFieldType == FieldType.Enum)
                    {
                        enumKeys += "'" + attr.UIBindKey + "',";
                    }
                }

                if (enumKeys.Length > 2)
                {
                    enumKeys = enumKeys.Substring(0, enumKeys.Length - 1);
                    // Sys_Enum
                    string    sqlEnum = "SELECT * FROM Sys_Enum WHERE EnumKey IN (" + enumKeys + ")";
                    DataTable dtEnum  = DBAccess.RunSQLReturnTable(sqlEnum);
                    dtEnum.TableName = "Sys_Enum";

                    if (SystemConfig.AppCenterDBType == DBType.Oracle)
                    {
                        dtEnum.Columns["MYPK"].ColumnName    = "MyPK";
                        dtEnum.Columns["LAB"].ColumnName     = "Lab";
                        dtEnum.Columns["ENUMKEY"].ColumnName = "EnumKey";
                        dtEnum.Columns["INTKEY"].ColumnName  = "IntKey";
                        dtEnum.Columns["LANG"].ColumnName    = "Lang";
                    }

                    ds.Tables.Add(dtEnum);
                }
                #endregion 把外键与枚举放入里面去.


                #region 增加 上方法.
                DataTable dtM = new DataTable("dtM");
                dtM.Columns.Add("No");
                dtM.Columns.Add("Title");
                dtM.Columns.Add("Tip");
                dtM.Columns.Add("Visable");

                dtM.Columns.Add("Url");
                dtM.Columns.Add("Target");
                dtM.Columns.Add("Warning");
                dtM.Columns.Add("RefMethodType");
                dtM.Columns.Add("GroupName");
                dtM.Columns.Add("W");
                dtM.Columns.Add("H");
                dtM.Columns.Add("Icon");
                dtM.Columns.Add("IsCanBatch");
                dtM.Columns.Add("RefAttrKey");

                RefMethods rms = map.HisRefMethods;
                foreach (RefMethod item in rms)
                {
                    string myurl = "";
                    if (item.RefMethodType != RefMethodType.Func)
                    {
                        myurl = item.Do(null) as string;
                        if (myurl == null)
                        {
                            continue;
                        }
                    }
                    else
                    {
                        myurl = "../RefMethod.htm?Index=" + item.Index + "&EnName=" + en.ToString() + "&EnsName=" + en.GetNewEntities.ToString() + "&PKVal=" + this.PKVal;
                    }

                    DataRow dr = dtM.NewRow();

                    dr["No"]      = item.Index;
                    dr["Title"]   = item.Title;
                    dr["Tip"]     = item.ToolTip;
                    dr["Visable"] = item.Visable;
                    dr["Warning"] = item.Warning;

                    dr["RefMethodType"] = (int)item.RefMethodType;
                    dr["RefAttrKey"]    = item.RefAttrKey;
                    dr["Url"]           = myurl;
                    dr["W"]             = item.Width;
                    dr["H"]             = item.Height;
                    dr["Icon"]          = item.Icon;
                    dr["IsCanBatch"]    = item.IsCanBatch;
                    dr["GroupName"]     = item.GroupName;

                    dtM.Rows.Add(dr); //增加到rows.
                }
                #endregion 增加 上方法.

                //增加方法。
                ds.Tables.Add(dtM);

                return(BP.Tools.Json.ToJson(ds));
            }
            catch (Exception ex)
            {
                return("err@" + ex.Message);
            }
        }
Esempio n. 4
0
        public Entities SetDGData(int pageIdx, bool isSearch)
        {
            //  this.BPToolBar1.SaveSearchState(this.EnsName, this.Key);
            this.ToolBar1.SaveSearchState(this.EnsName, this.Key);

            Entities    ens = this.HisEns;
            Entity      en  = ens.GetNewEntity;
            QueryObject qo  = new QueryObject(ens);

            qo = this.ToolBar1.GetnQueryObject(ens, en);
            string url = this.Request.RawUrl;

            if (url.IndexOf("PageIdx") != -1)
            {
                url = url.Substring(0, url.IndexOf("PageIdx") - 1);
            }

            this.UCSys2.Clear();
            int maxPageNum = 0;

            try
            {
                maxPageNum = this.UCSys2.BindPageIdx(qo.GetCount(), SystemConfig.PageSize, pageIdx, "Batch.aspx?EnsName=" + this.EnsName);
            }
            catch (Exception ex)
            {
                en.CheckPhysicsTable();
                throw ex;
            }

            if (isSearch)
            {
                return(null);
            }


            if (maxPageNum > 1)
            {
                this.UCSys2.Add("翻页键:← → PageUp PageDown");
            }

            qo.DoQuery(en.PK, SystemConfig.PageSize, pageIdx);

            this.UCSys1.DataPanelDtlCheckBox(ens);

            //if (this.IsS == false)
            //    this.UCSys3.Add("[<a href='Batch.aspx?EnsName=" + this.EnsName + "&PageIdx=" + this.PageIdx + "&IsS=1'>选择全部</a>]&nbsp;&nbsp;");
            //else
            //    this.UCSys3.Add("[<a href='Batch.aspx?EnsName=" + this.EnsName + "&PageIdx=" + this.PageIdx + "&IsS=0'>全不选</a>]&nbsp;&nbsp;");

            RefMethods rms = en.EnMap.HisRefMethods;

            foreach (RefMethod rm in rms)
            {
                if (rm.IsCanBatch == false)
                {
                    continue;
                }

                Button btn = new Button();
                btn.ID       = "Btn_" + rm.Index;
                btn.Text     = rm.Title;
                btn.CssClass = "Btn";
                if (rm.Warning == null)
                {
                    btn.Attributes["onclick"] = " return confirm('您确定要执行吗?');";
                }
                else
                {
                    btn.Attributes["onclick"] = " return confirm('" + rm.Warning + "');";
                }

                this.UCSys3.Add(btn);
                btn.Click += new EventHandler(btn_Click);
            }

            UAC uac = en.HisUAC;

            if (uac.IsDelete)
            {
                Button btn = new Button();
                btn.ID       = "Btn_Del";
                btn.CssClass = "Btn";

                btn.Text = "删除";
                btn.Attributes["onclick"] = " return confirm('您确认吗?');";
                btn.Attributes["class"]   = "Button";
                this.UCSys3.Add(btn);
                btn.Click += new EventHandler(btn_Click);
            }

            MoveToShowWay showWay = (MoveToShowWay)ens.GetEnsAppCfgByKeyInt("MoveToShowWay");

            // 执行移动.
            if (showWay != MoveToShowWay.None)
            {
                string MoveTo = en.GetCfgValStr("MoveTo");
                if (en.EnMap.Attrs.Contains(MoveTo) == false)
                {
                    this.Alert("Moveto 字段设置错误,实体不包含字段:" + MoveTo);
                    return(null);
                }


                Attr attr = en.EnMap.GetAttrByKey(MoveTo);
                if (showWay == MoveToShowWay.DDL)
                {
                    Button btnM = new Button();
                    btnM.ID       = "Btn_Move";
                    btnM.CssClass = "Btn";

                    btnM.Text = "移动到";
                    btnM.Attributes["onclick"] = "return confirm('您确实要移动吗?');";
                    this.UCSys3.Add("&nbsp;&nbsp;");
                    this.UCSys3.Add(btnM);

                    btnM.Click += new EventHandler(btn_Move_Click);

                    DDL ddl = new DDL();
                    ddl.ID = "DDL_MoveTo1";
                    if (attr.IsEnum)
                    {
                        ddl.BindSysEnum(attr.Key);
                        ddl.Items.Insert(0, new ListItem("选择" + "=>" + attr.Desc, "all"));
                    }
                    else
                    {
                        EntitiesNoName ens1 = attr.HisFKEns as EntitiesNoName;
                        ens1.RetrieveAll();
                        ddl.BindEntities(ens1);
                        ddl.Items.Insert(0, new ListItem("选择" + "=>" + attr.Desc, "all"));
                    }
                    this.UCSys3.Add(ddl);
                }

                if (showWay == MoveToShowWay.Panel)
                {
                    if (attr.IsEnum)
                    {
                        SysEnums ses = new SysEnums(attr.Key);
                        foreach (SysEnum se in ses)
                        {
                            Button btn = new Button();
                            btn.CssClass = "Btn";

                            btn.ID   = "Btn_Move_" + se.IntKey;
                            btn.Text = "设置" + ":" + se.Lab;
                            btn.Attributes["onclick"] = "return confirm('您确实要执行设置[" + se.Lab + "]吗?');";
                            btn.Click += new EventHandler(btn_Move_Click);
                            this.UCSys3.Add(btn);
                            this.UCSys3.Add("&nbsp;&nbsp;");
                        }
                    }
                    else
                    {
                        EntitiesNoName ens1 = attr.HisFKEns as EntitiesNoName;
                        ens1.RetrieveAll();
                        foreach (EntityNoName en1 in ens1)
                        {
                            Button btn = new Button();
                            btn.CssClass = "Btn";
                            btn.ID       = "Btn_Move_" + en1.No;
                            btn.Text     = "设置:" + en1.Name;
                            btn.Attributes["onclick"] = "return confirm('您确实要设置[" + en1.Name + "]吗?');";
                            btn.Click += new EventHandler(btn_Move_Click);
                            this.UCSys3.Add(btn);
                            this.UCSys3.Add("&nbsp;&nbsp;");
                        }
                    }
                }
            }

            int ToPageIdx = this.PageIdx + 1;
            int PPageIdx  = this.PageIdx - 1;

            this.UCSys3.Add("<SCRIPT language=javascript>");
            this.UCSys3.Add("\t\n document.onkeydown = chang_page;");
            this.UCSys3.Add("\t\n function chang_page() {");
            //  this.UCSys3.Add("\t\n  alert(event.keyCode); ");
            if (this.PageIdx == 1)
            {
                this.UCSys3.Add("\t\n if (event.keyCode == 37 || event.keyCode == 33) alert('已经是第一页');");
            }
            else
            {
                this.UCSys3.Add("\t\n if (event.keyCode == 37  || event.keyCode == 38 || event.keyCode == 33) ");
                this.UCSys3.Add("\t\n     location='Batch.aspx?EnsName=" + this.EnsName + "&PageIdx=" + PPageIdx + "';");
            }
            if (this.PageIdx == maxPageNum)
            {
                this.UCSys3.Add("\t\n if (event.keyCode == 39 || event.keyCode == 40 || event.keyCode == 34) alert('已经是最后一页');");
            }
            else
            {
                this.UCSys3.Add("\t\n if (event.keyCode == 39 || event.keyCode == 40 || event.keyCode == 34) ");
                this.UCSys3.Add("\t\n     location='Batch.aspx?EnsName=" + this.EnsName + "&PageIdx=" + ToPageIdx + "';");
            }

            this.UCSys3.Add("\t\n } ");
            this.UCSys3.Add("</SCRIPT>");
            return(ens);
        }
Esempio n. 5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Entity en = BP.DA.ClassFactory.GetEn(this.EnName);

            if (this.PK == null)
            {
                return;
            }

            if (en == null)
            {
                throw new Exception(this.EnsName + " " + this.EnName);
            }

            if (en.EnMap.AttrsOfOneVSM.Count + en.EnMap.Dtls.Count + en.EnMap.HisRefMethods.Count == 0)
            {
                return;
            }

            en.PKVal = this.PK;
            string keys = "&" + en.PK + "=" + this.PK + "&r=" + DateTime.Now.ToString("MMddhhmmss");

            string titleKey = "";

            if (en.EnMap.Attrs.Contains("Name"))
            {
                titleKey = "Name";
            }
            else if (en.EnMap.Attrs.Contains("Title"))
            {
                titleKey = "Title";
            }
            string desc = en.EnDesc;

            if (titleKey != "")
            {
                en.RetrieveFromDBSources();
                desc = en.GetValStrByKey(titleKey);
                if (desc.Length > 30)
                {
                    desc = en.EnDesc;
                }
            }

            this.AddFieldSet("<a href='UIEn.aspx?EnName=" + this.EnName + "&PK=" + this.PK + "' >" + desc + "-主页</a>");
            this.AddUL();

            #region 加入一对多的实体编辑
            AttrsOfOneVSM oneVsM = en.EnMap.AttrsOfOneVSM;
            string        sql    = "";
            int           i      = 0;
            if (oneVsM.Count > 0)
            {
                foreach (AttrOfOneVSM vsM in oneVsM)
                {
                    string url = "Dot2Dot.aspx?EnsName=" + en.GetNewEntities.ToString() + "&EnName=" + this.EnName + "&AttrKey=" + vsM.EnsOfMM.ToString() + keys;
                    try
                    {
                        sql = "SELECT COUNT(*) as NUM FROM " + vsM.EnsOfMM.GetNewEntity.EnMap.PhysicsTable + " WHERE " + vsM.AttrOfOneInMM + "='" + en.PKVal + "'";
                        i   = DBAccess.RunSQLReturnValInt(sql);
                    }
                    catch
                    {
                        sql = "SELECT COUNT(*) as NUM FROM " + vsM.EnsOfMM.GetNewEntity.EnMap.PhysicsTable + " WHERE " + vsM.AttrOfOneInMM + "=" + en.PKVal;
                        try
                        {
                            i = DBAccess.RunSQLReturnValInt(sql);
                        }
                        catch
                        {
                            vsM.EnsOfMM.GetNewEntity.CheckPhysicsTable();
                        }
                    }
                    if (i == 0)
                    {
                        if (this.AttrKey == vsM.EnsOfMM.ToString())
                        {
                            this.AddLi("<b><a href='" + url + "'  >" + vsM.Desc + "</a></b>");
                        }
                        else
                        {
                            this.AddLi("<a href='" + url + "'  >" + vsM.Desc + "</a>");
                        }
                    }
                    else
                    {
                        if (this.AttrKey == vsM.EnsOfMM.ToString())
                        {
                            this.AddLi("<b><a href='" + url + "'  >" + vsM.Desc + "-" + i + "</a></b>");
                        }
                        else
                        {
                            this.AddLi("<a href='" + url + "'  >" + vsM.Desc + "-" + i + "</a>");
                        }
                    }
                }
            }
            #endregion

            #region 加入他门的 方法
            RefMethods myreffuncs = en.EnMap.HisRefMethods;
            string     path       = this.Request.ApplicationPath;
            foreach (RefMethod func in myreffuncs)
            {
                if (func.Visable == false)
                {
                    continue;
                }
                // string url = path + "/Comm/RefMethod.aspx?Index=" + func.Index + "&EnsName=" + hisens.ToString() + keys;
                string url = "/WF/Comm/RefMethod.aspx?Index=" + func.Index + "&EnsName=" + en.GetNewEntities.ToString() + keys;
                //  string urlRefFunc = "RefMethod.aspx?Index=" + func.Index + "&EnsName=" + en.GetNewEntities.ToString() + keys;
                if (func.Warning == null)
                {
                    if (func.Target == null)
                    {
                        this.AddLi(func.GetIcon(path) + "<a href='" + url + "' ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                    }
                    else
                    {
                        this.AddLi(func.GetIcon(path) + "<a href=\"javascript:WinOpen('" + url + "','" + func.Target + "')\" ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                    }
                }
                else
                {
                    if (func.Target == null)
                    {
                        this.AddLi(func.GetIcon(path) + "<a href=\"javascript: if ( confirm('" + func.Warning + "') ) { window.location.href='" + url + "' }\" ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                    }
                    else
                    {
                        this.AddLi(func.GetIcon(path) + "<a href=\"javascript: if ( confirm('" + func.Warning + "') ) { WinOpen('" + url + "','" + func.Target + "') }\" ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                    }
                }
            }
            #endregion

            #region 加入他的明细
            EnDtls enDtls = en.EnMap.Dtls;
            foreach (EnDtl enDtl in enDtls)
            {
                string url = "Dtl.aspx?EnName=" + this.EnName + "&PK=" + this.PK + "&EnsName=" + enDtl.EnsName + "&RefKey=" + enDtl.RefKey + "&RefVal=" + en.PKVal.ToString() + "&MainEnsName=" + en.ToString() + keys;
                try
                {
                    i = DBAccess.RunSQLReturnValInt("SELECT COUNT(*) FROM " + enDtl.Ens.GetNewEntity.EnMap.PhysicsTable + " WHERE " + enDtl.RefKey + "='" + en.PKVal + "'");
                }
                catch
                {
                    i = DBAccess.RunSQLReturnValInt("SELECT COUNT(*) FROM " + enDtl.Ens.GetNewEntity.EnMap.PhysicsTable + " WHERE " + enDtl.RefKey + "=" + en.PKVal);
                }
                if (i == 0)
                {
                    this.AddLi("<a href=\"" + url + "\"  >" + enDtl.Desc + "</a>");
                }
                else
                {
                    this.AddLi("<a href=\"" + url + "\"   >" + enDtl.Desc + "-" + i + "</a>");
                }
            }
            #endregion

            this.AddULEnd();
            this.AddFieldSetEnd();
        }
Esempio n. 6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Entity en = BP.En.ClassFactory.GetEn(this.EnName);

            if (this.PK == null)
            {
                return;
            }

            if (en == null)
            {
                throw new Exception(this.EnsName + " " + this.EnName);
            }

            if (en.EnMap.AttrsOfOneVSM.Count + en.EnMap.Dtls.Count + en.EnMap.HisRefMethods.Count == 0)
            {
                return;
            }

            en.PKVal = this.PK;
            string keys = "&" + en.PK + "=" + this.PK + "&r=" + DateTime.Now.ToString("MMddhhmmss");

            string titleKey = "";

            if (en.EnMap.Attrs.Contains("Name"))
            {
                titleKey = "Name";
            }
            else if (en.EnMap.Attrs.Contains("Title"))
            {
                titleKey = "Title";
            }
            string desc = en.EnDesc;

            if (titleKey != "")
            {
                en.RetrieveFromDBSources();
                desc = en.GetValStrByKey(titleKey);
                if (desc.Length > 30)
                {
                    desc = en.EnDesc;
                }
            }

            AddUL("class='navlist'");
            AddLi(
                string.Format("<div><a href='UIEn.aspx?EnName={0}&PK={1}'><span class='nav'>{2}</span></a></div>{3}", EnName, PK, titleKey == "Title" ? "主页" : desc + " - 主页", Environment.NewLine));

            #region 加入一对多的实体编辑
            AttrsOfOneVSM oneVsM = en.EnMap.AttrsOfOneVSM;
            string        sql    = "";
            int           i      = 0;
            if (oneVsM.Count > 0)
            {
                foreach (AttrOfOneVSM vsM in oneVsM)
                {
                    string url = "Dot2Dot.aspx?EnsName=" + en.GetNewEntities.ToString() + "&EnName=" + this.EnName + "&AttrKey=" + vsM.EnsOfMM.ToString() + keys;
                    try
                    {
                        sql = "SELECT COUNT(" + vsM.AttrOfOneInMM + ") as NUM FROM " + vsM.EnsOfMM.GetNewEntity.EnMap.PhysicsTable + " WHERE " + vsM.AttrOfOneInMM + "='" + en.PKVal + "'";
                        i   = DBAccess.RunSQLReturnValInt(sql);
                    }
                    catch
                    {
                        sql = "SELECT COUNT(" + vsM.AttrOfOneInMM + ") as NUM FROM " + vsM.EnsOfMM.GetNewEntity.EnMap.PhysicsTable + " WHERE " + vsM.AttrOfOneInMM + "=" + en.PKVal;
                        try
                        {
                            i = DBAccess.RunSQLReturnValInt(sql);
                        }
                        catch
                        {
                            vsM.EnsOfMM.GetNewEntity.CheckPhysicsTable();
                        }
                    }
                    if (i == 0)
                    {
                        if (this.AttrKey == vsM.EnsOfMM.ToString())
                        {
                            AddLi(string.Format(
                                      "<div style='font-weight:bold'><a href='{0}'><span class='nav'>{1}</span></a></div>{2}",
                                      url, vsM.Desc, Environment.NewLine));
                        }
                        else
                        {
                            AddLi(string.Format("<div><a href='{0}'><span class='nav'>{1}</span></a></div>{2}", url, vsM.Desc, Environment.NewLine));
                        }
                    }
                    else
                    {
                        if (this.AttrKey == vsM.EnsOfMM.ToString())
                        {
                            AddLi(string.Format(
                                      "<div style='font-weight:bold'><a href='{0}'><span class='nav'>{1} [{2}]</span></a></div>{3}",
                                      url, vsM.Desc, i, Environment.NewLine));
                        }
                        else
                        {
                            AddLi(string.Format("<div><a href='{0}'><span class='nav'>{1} [{2}]</span></a></div>{3}", url, vsM.Desc, i, Environment.NewLine));
                        }
                    }
                }
            }
            #endregion

            #region 加入方法
            RefMethods myreffuncs = en.EnMap.HisRefMethods;
            string     path       = this.Request.ApplicationPath;
            foreach (RefMethod func in myreffuncs)
            {
                if (func.Visable == false || func.RefAttrKey != null)
                {
                    continue;
                }

                if (func.RefMethodType != RefMethodType.Func)
                {
                    string myurl = func.Do(null) as string;
                    int    h     = func.Height;

                    if (func.Target == null)
                    {
                        //this.AddLi(func.GetIcon(path) + "<a href='" + myurl + "' ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                        AddLi(string.Format("<div><a href='{0}' title='{1}'><span class='nav'>{2}</span></a></div>{3}", myurl, func.ToolTip, func.Title, Environment.NewLine));
                    }
                    else
                    {
                        //this.AddLi(func.GetIcon(path) + "<a href=\"javascript:WinOpen('" + myurl + "','" + func.Target + "')\" ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                        AddLi(string.Format("<div><a href=\"javascript:WinOpen('{0}','{1}')\" title='{2}'><span class='nav'>{3}</span></a></div>{4}", myurl, func.Target, func.ToolTip, func.Title, Environment.NewLine));
                    }
                    continue;
                }

                string url = "../RefMethod.aspx?Index=" + func.Index + "&EnsName=" + en.GetNewEntities.ToString() + keys;
                if (func.Warning == null)
                {
                    if (func.Target == null)
                    {
                        //this.AddLi(func.GetIcon(path) + "<a href='" + url + "' ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                        AddLi(string.Format("<div><a href='{0}' title='{1}'><span class='nav'>{2}</span></a></div>{3}", url, func.ToolTip, func.Title, Environment.NewLine));
                    }
                    else
                    {
                        //this.AddLi(func.GetIcon(path) + "<a href=\"javascript:WinOpen('" + url + "','" + func.Target + "')\" ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                        AddLi(string.Format("<div><a href=\"javascript:WinOpen('{0}','{1}')\" title='{2}'><span class='nav'>{3}</span></a></div>{4}", url, func.Target, func.ToolTip, func.Title, Environment.NewLine));
                    }
                }
                else
                {
                    if (func.Target == null)
                    {
                        //this.AddLi(func.GetIcon(path) + "<a href=\"javascript: if ( confirm('" + func.Warning + "') ) { window.location.href='" + url + "' }\" ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                        AddLi(string.Format(
                                  "<div><a href=\"javascript: if ( confirm('{0}')){{ window.location.href='{1}' }}\" title='{2}'><span class='nav'>{3}</span></a></div>{4}",
                                  func.Warning, url, func.ToolTip, func.Title, Environment.NewLine));
                    }
                    else
                    {
                        //this.AddLi(func.GetIcon(path) + "<a href=\"javascript: if ( confirm('" + func.Warning + "') ) { WinOpen('" + url + "','" + func.Target + "') }\" ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                        AddLi(string.Format(
                                  "<div><a href=\"javascript: if ( confirm('{0}')){{ WinOpen('{1}','{2}') }}\" title='{3}'><span class='nav'>{4}</span></a></div>{5}",
                                  func.Warning, url, func.Target, func.ToolTip, func.Title, Environment.NewLine));
                    }
                }
            }
            #endregion

            #region 加入他的明细
            EnDtls enDtls = en.EnMap.Dtls;
            foreach (EnDtl enDtl in enDtls)
            {
                string url = "Dtl.aspx?EnName=" + this.EnName + "&PK=" + this.PK + "&EnsName=" + enDtl.EnsName + "&RefKey=" + enDtl.RefKey + "&RefVal=" + en.PKVal.ToString() + "&MainEnsName=" + en.ToString() + keys;
                try
                {
                    i = DBAccess.RunSQLReturnValInt("SELECT COUNT(" + enDtl.RefKey + ") FROM " + enDtl.Ens.GetNewEntity.EnMap.PhysicsTable + " WHERE " + enDtl.RefKey + "='" + en.PKVal + "'");
                }
                catch
                {
                    try
                    {
                        i = DBAccess.RunSQLReturnValInt("SELECT COUNT(" + enDtl.RefKey + ") FROM " + enDtl.Ens.GetNewEntity.EnMap.PhysicsTable + " WHERE " + enDtl.RefKey + "=" + en.PKVal);
                    }
                    catch
                    {
                        enDtl.Ens.GetNewEntity.CheckPhysicsTable();
                    }
                }

                if (i == 0)
                {
                    //this.AddLi("<a href=\"" + url + "\"  >" + enDtl.Desc + "</a>");
                    AddLi(string.Format("<div><a href='{0}'><span class='nav'>{1}</span></a></div>{2}", url, enDtl.Desc, Environment.NewLine));
                }
                else
                {
                    //this.AddLi("<a href=\"" + url + "\"   >" + enDtl.Desc + "-" + i + "</a>");
                    AddLi(string.Format("<div><a href='{0}'><span class='nav'>{1} [{2}]</span></a></div>{3}", url, enDtl.Desc, i, Environment.NewLine));
                }
            }
            #endregion

            AddULEnd();
        }
Esempio n. 7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Entity en = BP.En.ClassFactory.GetEn(this.EnName);

            if (this.PK == null)
            {
                return;
            }

            if (en == null)
            {
                throw new Exception(this.EnsName + " " + this.EnName);
            }

            if (en.EnMap.AttrsOfOneVSM.Count + en.EnMap.Dtls.Count + en.EnMap.HisRefMethods.Count == 0)
            {
                return;
            }

            en.PKVal = this.PK;
            string keys = "&" + en.PK + "=" + this.PK + "&r=" + DateTime.Now.ToString("MMddhhmmss");

            string titleKey = "";

            if (en.EnMap.Attrs.Contains("Name"))
            {
                titleKey = "Name";
            }
            else if (en.EnMap.Attrs.Contains("Title"))
            {
                titleKey = "Title";
            }
            string desc = en.EnDesc;

            if (titleKey != "")
            {
                en.RetrieveFromDBSources();
                desc = en.GetValStrByKey(titleKey);
                if (desc.Length > 30)
                {
                    desc = en.EnDesc;
                }
            }

            //edited by liuxc,2016-3-3,修改左侧功能列表导航的表现形式,RefMethod中增加分组的概念,2016-3-7修改完成
            Dictionary <string, List <LeftMenuItem> > dictDefs = new Dictionary <string, List <LeftMenuItem> >();

            //AddUL("class='navlist'");
            //AddLi(
            //    string.Format("<div><a href='UIEn.aspx?EnName={0}&PK={1}'>{4}<span class='nav'>{2}</span></a></div>{3}", EnName, PK, titleKey == "Title" ? "主页" : desc, Environment.NewLine, GetIcon(IconFirstDefault)));
            AddGroupedLeftItem(dictDefs, "默认组", new LeftMenuItem(CCFlowPath, (titleKey == "Title" ? "主页" : desc),
                                                                 string.Format("UIEn.aspx?EnName={0}&PK={1}", EnName, PK),
                                                                 IconFirstDefault, false));

            #region 加入一对多的实体编辑
            AttrsOfOneVSM oneVsM = en.EnMap.AttrsOfOneVSM;
            string        sql    = "";
            int           i      = 0;

            if (oneVsM.Count > 0)
            {
                foreach (AttrOfOneVSM vsM in oneVsM)
                {
                    string url = "Dot2Dot.aspx?EnsName=" + en.GetNewEntities.ToString() + "&EnName=" + this.EnName + "&AttrKey=" + vsM.EnsOfMM.ToString() + keys;
                    try
                    {
                        sql = "SELECT COUNT(*) as NUM FROM " + vsM.EnsOfMM.GetNewEntity.EnMap.PhysicsTable + " WHERE " + vsM.AttrOfOneInMM + "='" + en.PKVal + "'";
                        i   = DBAccess.RunSQLReturnValInt(sql);
                    }
                    catch
                    {
                        sql = "SELECT COUNT(*) as NUM FROM " + vsM.EnsOfMM.GetNewEntity.EnMap.PhysicsTable + " WHERE " + vsM.AttrOfOneInMM + "=" + en.PKVal;
                        try
                        {
                            i = DBAccess.RunSQLReturnValInt(sql);
                        }
                        catch
                        {
                            vsM.EnsOfMM.GetNewEntity.CheckPhysicsTable();
                        }
                    }
                    if (i == 0)
                    {
                        if (this.AttrKey == vsM.EnsOfMM.ToString())
                        {
                            //AddLi(string.Format(
                            //    "<div style='font-weight:bold'><a href='{0}'>{3}<span class='nav'>{1}</span></a></div>{2}",
                            //    url, vsM.Desc, Environment.NewLine, GetIcon(IconM2MDefault)));
                            AddGroupedLeftItem(dictDefs, "默认组", new LeftMenuItem(CCFlowPath, vsM.Desc, url, IconM2MDefault, true));
                            ItemCount++;
                        }
                        else
                        {
                            //AddLi(string.Format("<div><a href='{0}'>{3}<span class='nav'>{1}</span></a></div>{2}", url, vsM.Desc, Environment.NewLine, GetIcon(IconM2MDefault)));
                            AddGroupedLeftItem(dictDefs, "默认组", new LeftMenuItem(CCFlowPath, vsM.Desc, url, IconM2MDefault, false));
                            ItemCount++;
                        }
                    }
                    else
                    {
                        if (this.AttrKey == vsM.EnsOfMM.ToString())
                        {
                            //AddLi(string.Format(
                            //    "<div style='font-weight:bold'><a href='{0}'>{4}<span class='nav'>{1}[{2}]</span></a></div>{3}",
                            //    url, vsM.Desc, i, Environment.NewLine, GetIcon(IconM2MDefault)));
                            AddGroupedLeftItem(dictDefs, "默认组", new LeftMenuItem(CCFlowPath, vsM.Desc + "[" + i + "]", url, IconM2MDefault, true));
                            ItemCount++;
                        }
                        else
                        {
                            //AddLi(string.Format("<div><a href='{0}'>{4}<span class='nav'>{1}[{2}]</span></a></div>{3}", url, vsM.Desc, i, Environment.NewLine, GetIcon(IconM2MDefault)));
                            AddGroupedLeftItem(dictDefs, "默认组", new LeftMenuItem(CCFlowPath, vsM.Desc + "[" + i + "]", url, IconM2MDefault, false));
                            ItemCount++;
                        }
                    }
                }
            }
            #endregion

            #region 加入他门的 方法
            Dictionary <string, List <LeftMenuItem> > dictGrps = new Dictionary <string, List <LeftMenuItem> >();

            RefMethods myreffuncs = en.EnMap.HisRefMethods;
            string     path       = this.Request.ApplicationPath;
            bool       haveGroup  = false;
            foreach (RefMethod func in myreffuncs)
            {
                if (func.Visable == false || func.RefAttrKey != null)
                {
                    continue;
                }

                haveGroup = !string.IsNullOrWhiteSpace(func.GroupName);

                if (func.RefMethodType != RefMethodType.Func)
                {
                    string myurl = func.Do(null) as string;
                    int    h     = func.Height;

                    if (func.RefMethodType == RefMethodType.RightFrameOpen)
                    {
                        //AddLi(string.Format(
                        //        "<div><a href='javascript:void(0)' onclick=\"javascript:OpenUrlInRightFrame(this,'{0}')\" title='{1}'>{4}<span class='nav'>{2}</span></a></div>{3}",
                        //        myurl, func.ToolTip, func.Title, Environment.NewLine, GetIcon(func.Icon)));
                        AddGroupedLeftItem(haveGroup ? dictGrps : dictDefs, haveGroup ? func.GroupName : "默认组",
                                           new LeftMenuItem(CCFlowPath, func.Title, "javascript:OpenUrlInRightFrame(this,'" + myurl + "')", func.Icon, false,
                                                            func.ToolTip));
                        ItemCount++;
                        continue;
                    }

                    if (func.Target == null)
                    {
                        //this.AddLi(func.GetIcon(path) + "<a href='" + myurl + "' ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                        //AddLi(string.Format("<div><a href='{0}' title='{1}'>{4}<span class='nav'>{2}</span></a></div>{3}", myurl, func.ToolTip, func.Title, Environment.NewLine, GetIcon(func.Icon)));
                        AddGroupedLeftItem(haveGroup ? dictGrps : dictDefs, haveGroup ? func.GroupName : "默认组",
                                           new LeftMenuItem(CCFlowPath, func.Title, myurl, func.Icon, false,
                                                            func.ToolTip));
                        ItemCount++;
                    }
                    else
                    {
                        //this.AddLi(func.GetIcon(path) + "<a href=\"javascript:WinOpen('" + myurl + "','" + func.Target + "')\" ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                        //AddLi(string.Format("<div><a href=\"javascript:WinOpen('{0}','{1}')\" title='{2}'>{5}<span class='nav'>{3}</span></a></div>{4}", myurl, func.Target, func.ToolTip, func.Title, Environment.NewLine, GetIcon(func.Icon)));
                        AddGroupedLeftItem(haveGroup ? dictGrps : dictDefs, haveGroup ? func.GroupName : "默认组",
                                           new LeftMenuItem(CCFlowPath, func.Title,
                                                            "javascript:WinOpen('" + myurl + "', '" + func.Target + "')",
                                                            func.Icon, false,
                                                            func.ToolTip));
                        ItemCount++;
                    }
                    continue;
                }

                // string url = path + "/Comm/RefMethod.aspx?Index=" + func.Index + "&EnsName=" + hisens.ToString() + keys;
                string url = "../RefMethod.aspx?Index=" + func.Index + "&EnsName=" + en.GetNewEntities.ToString() + keys;

                //  string urlRefFunc = "RefMethod.aspx?Index=" + func.Index + "&EnsName=" + en.GetNewEntities.ToString() + keys;
                if (func.Warning == null)
                {
                    if (func.Target == null)
                    {
                        //this.AddLi(func.GetIcon(path) + "<a href='" + url + "' ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                        //AddLi(string.Format("<div><a href='{0}' title='{1}'>{4}<span class='nav'>{2}</span></a></div>{3}", url, func.ToolTip, func.Title, Environment.NewLine, GetIcon(func.Icon)));
                        AddGroupedLeftItem(haveGroup ? dictGrps : dictDefs, haveGroup ? func.GroupName : "默认组",
                                           new LeftMenuItem(CCFlowPath, func.Title, url, func.Icon, false,
                                                            func.ToolTip));
                        ItemCount++;
                    }
                    else
                    {
                        //this.AddLi(func.GetIcon(path) + "<a href=\"javascript:WinOpen('" + url + "','" + func.Target + "')\" ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                        //AddLi(string.Format("<div><a href=\"javascript:WinOpen('{0}','{1}')\" title='{2}'>{5}<span class='nav'>{3}</span></a></div>{4}", url, func.Target, func.ToolTip, func.Title, Environment.NewLine, GetIcon(func.Icon)));
                        AddGroupedLeftItem(haveGroup ? dictGrps : dictDefs, haveGroup ? func.GroupName : "默认组",
                                           new LeftMenuItem(CCFlowPath, func.Title,
                                                            "javascript:WinOpen('" + url + "', '" + func.Target + "')",
                                                            func.Icon, false,
                                                            func.ToolTip));
                        ItemCount++;
                    }
                }
                else
                {
                    if (func.Target == null)
                    {
                        //this.AddLi(func.GetIcon(path) + "<a href=\"javascript: if ( confirm('" + func.Warning + "') ) { window.location.href='" + url + "' }\" ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                        //AddLi(string.Format(
                        //    "<div><a href=\"javascript: if ( confirm('{0}')){{ window.location.href='{1}' }}\" title='{2}'>{5}<span class='nav'>{3}</span></a></div>{4}",
                        //    func.Warning, url, func.ToolTip, func.Title, Environment.NewLine, GetIcon(func.Icon)));
                        AddGroupedLeftItem(haveGroup ? dictGrps : dictDefs, haveGroup ? func.GroupName : "默认组",
                                           new LeftMenuItem(CCFlowPath, func.Title,
                                                            "javascript: if ( confirm('" + func.Warning +
                                                            "')){{ window.location.href='" + url + "' }}", func.Icon,
                                                            false,
                                                            func.ToolTip));
                        ItemCount++;
                    }
                    else
                    {
                        //this.AddLi(func.GetIcon(path) + "<a href=\"javascript: if ( confirm('" + func.Warning + "') ) { WinOpen('" + url + "','" + func.Target + "') }\" ToolTip='" + func.ToolTip + "' >" + func.Title + "</a>");
                        //AddLi(string.Format(
                        //    "<div><a href=\"javascript: if ( confirm('{0}')){{ WinOpen('{1}','{2}') }}\" title='{3}'>{6}<span class='nav'>{4}</span></a></div>{5}",
                        //    func.Warning, url, func.Target, func.ToolTip, func.Title, Environment.NewLine, GetIcon(func.Icon)));
                        AddGroupedLeftItem(haveGroup ? dictGrps : dictDefs, haveGroup ? func.GroupName : "默认组",
                                           new LeftMenuItem(CCFlowPath, func.Title,
                                                            "javascript: if ( confirm('" + func.Warning +
                                                            "')){{ WinOpen('" + url + "', '" + func.Target + "') }}",
                                                            func.Icon,
                                                            false,
                                                            func.ToolTip));
                        ItemCount++;
                    }
                }
            }
            #endregion

            #region 加入他的明细
            EnDtls enDtls = en.EnMap.Dtls;
            foreach (EnDtl enDtl in enDtls)
            {
                string url = "Dtl.aspx?EnName=" + this.EnName + "&PK=" + this.PK + "&EnsName=" + enDtl.EnsName + "&RefKey=" + enDtl.RefKey + "&RefVal=" + en.PKVal.ToString() + "&MainEnsName=" + en.ToString() + keys;

                try
                {
                    i = DBAccess.RunSQLReturnValInt("SELECT COUNT(*) FROM " + enDtl.Ens.GetNewEntity.EnMap.PhysicsTable + " WHERE " + enDtl.RefKey + "='" + en.PKVal + "'");
                }
                catch
                {
                    try
                    {
                        i = DBAccess.RunSQLReturnValInt("SELECT COUNT(*) FROM " + enDtl.Ens.GetNewEntity.EnMap.PhysicsTable + " WHERE " + enDtl.RefKey + "=" + en.PKVal);
                    }
                    catch
                    {
                        enDtl.Ens.GetNewEntity.CheckPhysicsTable();
                    }
                }

                if (i == 0)
                {
                    //this.AddLi("<a href=\"" + url + "\"  >" + enDtl.Desc + "</a>");
                    //AddLi(string.Format("<div><a href='{0}'>{3}<span class='nav'>{1}</span></a></div>{2}", url, enDtl.Desc, Environment.NewLine, GetIcon(IconDtlDefault)));
                    AddGroupedLeftItem(dictDefs, "默认组", new LeftMenuItem(CCFlowPath, enDtl.Desc, url, IconDtlDefault, false));
                    ItemCount++;
                }
                else
                {
                    //this.AddLi("<a href=\"" + url + "\"   >" + enDtl.Desc + "-" + i + "</a>");
                    //AddLi(string.Format("<div><a href='{0}'>{4}<span class='nav'>{1} [{2}]</span></a></div>{3}", url, enDtl.Desc, i, Environment.NewLine, GetIcon(IconDtlDefault)));
                    AddGroupedLeftItem(dictDefs, "默认组", new LeftMenuItem(CCFlowPath, enDtl.Desc + "[" + i + "]", url, IconDtlDefault, false));
                    ItemCount++;
                }
            }
            #endregion

            //AddULEnd();

            //added by liuxc,2016-3-7
            if (dictGrps.Count == 0)
            {
                AddUL("class='navlist'");

                foreach (LeftMenuItem item in dictDefs["默认组"])
                {
                    AddLi(item.LiString);
                }

                AddULEnd();
            }
            else
            {
                Add("<div class='easyui-accordion' data-options='fit:true'>");

                //增加默认组
                Add("<div title='基本功能' style='overflow:auto;'>");
                AddUL("class='navlist'");

                foreach (LeftMenuItem item in dictDefs["默认组"])
                {
                    AddLi(item.LiString);
                }

                AddULEnd();
                AddDivEnd();

                //增加RefMethod分组
                foreach (KeyValuePair <string, List <LeftMenuItem> > grp in dictGrps)
                {
                    Add("<div title='" + grp.Key + "' style='overflow:auto;'>");
                    AddUL("class='navlist'");

                    foreach (LeftMenuItem item in grp.Value)
                    {
                        AddLi(item.LiString);
                    }

                    AddULEnd();
                    AddDivEnd();
                }

                AddDivEnd();
            }
        }