using System; using System.Data; using System.Collections; using BP.DA; using BP.En; using BP.Sys; using System.Web; namespace BP.Sys.FrmUI { /// /// 数值字段 /// public class MapAttrNum : EntityMyPK { #region 属性. /// /// 默认值 /// public string DefVal { get { string str= this.GetValStrByKey(MapAttrAttr.DefVal); if (DataType.IsNullOrEmpty(str) == true) return "0"; return str; } set { this.SetValByKey(MapAttrAttr.DefVal, value); } } public int DefValType { get { return this.GetValIntByKey(MapAttrAttr.DefValType); } set { this.SetValByKey(MapAttrAttr.DefValType, value); } } /// /// 表单ID /// public string FK_MapData { get { return this.GetValStringByKey(MapAttrAttr.FK_MapData); } set { this.SetValByKey(MapAttrAttr.FK_MapData, value); } } /// /// 字段 /// public string KeyOfEn { get { return this.GetValStringByKey(MapAttrAttr.KeyOfEn); } set { this.SetValByKey(MapAttrAttr.KeyOfEn, value); } } /// /// 绑定的枚举ID /// public string UIBindKey { get { return this.GetValStringByKey(MapAttrAttr.UIBindKey); } set { this.SetValByKey(MapAttrAttr.UIBindKey, value); } } /// /// 数据类型 /// public int MyDataType { get { return this.GetValIntByKey(MapAttrAttr.MyDataType); } set { this.SetValByKey(MapAttrAttr.MyDataType, value); } } #endregion #region 构造方法 /// /// 控制权限 /// public override UAC HisUAC { get { UAC uac = new UAC(); uac.IsInsert = false; uac.IsUpdate = true; uac.IsDelete = true; return uac; } } /// /// 数值字段 /// public MapAttrNum() { } /// /// EnMap /// public override Map EnMap { get { if (this._enMap != null) return this._enMap; Map map = new Map("Sys_MapAttr", "数值字段"); map.IndexField = MapAttrAttr.FK_MapData; #region 基本信息. map.AddGroupAttr("基本属性"); map.AddMyPK(); map.AddTBString(MapAttrAttr.FK_MapData, null, "实体标识", false, false, 1, 100, 20); map.AddTBString(MapAttrAttr.Name, null, "字段中文名", true, false, 0, 200, 20); map.AddTBString(MapAttrAttr.KeyOfEn, null, "字段名", true, true, 1, 200, 20); map.AddDDLSysEnum(MapAttrAttr.MyDataType, 2, "数据类型", true, false); map.AddTBString(MapAttrAttr.DefVal, MapAttrAttr.DefaultVal, "默认值/小数位数", true, false, 0, 200, 20); map.AddDDLSysEnum(MapAttrAttr.DefValType, 1, "默认值选择方式", true, true, "DefValType", "@0=默认值为空@1=按照设置的默认值设置", false); string help = "给该字段设置默认值:\t\r"; help += "\t\r 1. 如果是整形就设置一个整形的数字作为默认值."; help += "\t\r 2. 对于float,decimal数据类型,如果设置0.0000就是标识要保留4位小数,如果是1.0000 标识保留4位小数,默认值为1."; map.SetHelperAlert("DefVal", help); map.AddBoolean(MapAttrAttr.UIVisible, true, "是否可见?", true, true); map.AddBoolean(MapAttrAttr.UIIsEnable, true, "是否可编辑?", true, true); map.AddBoolean(MapAttrAttr.UIIsInput, false, "是否必填项?", true, true); //map.AddBoolean(MapAttrAttr.IsSecret, false, "是否保密?", true, true); map.AddBoolean("ExtIsSum", false, "是否显示合计(对从表有效)", true, true); map.SetHelperAlert("ExtIsSum", "如果是从表,就需要显示该从表的合计,在从表的底部."); map.AddTBString(MapAttrAttr.Tip, null, "激活提示", true, false, 0, 400, 20, true); map.AddTBString("NumMin", null, "最小值", true, false, 0, 400, 20); map.AddTBString("NumMax", null, "最大值", true, false, 0, 400, 20); map.AddTBFloat("NumStepLength", 1, "步长", true, false); map.AddTBAtParas(4000); #endregion 基本信息. #region 傻瓜表单 map.AddGroupAttr("傻瓜表单"); map.AddDDLSysEnum(MapAttrAttr.ColSpan, 1, "TextBox单元格数", true, true, "ColSpanAttrDT", "@1=跨1个单元格@2=跨2个单元格@3=跨3个单元格@4=跨4个单元格"); //文本占单元格数量 map.AddDDLSysEnum(MapAttrAttr.LabelColSpan, 1, "Label文本单元格数", true, true, "ColSpanAttrString", "@1=跨1个单元格@2=跨2个单元格@3=跨3个单元格@4=跨4个单元格"); map.AddTBFloat(MapAttrAttr.UIWidth, 80, "宽度", true, false); map.AddTBFloat(MapAttrAttr.UIHeight, 23, "高度", true, true); //文本跨行 map.AddTBInt(MapAttrAttr.RowSpan, 1, "行数", true, false); //显示的分组. map.AddDDLSQL(MapAttrAttr.GroupID, 0, "显示的分组", MapAttrString.SQLOfGroupAttr, true); map.AddTBInt(MapAttrAttr.Idx, 0, "顺序号", true, false); //@李国文 map.AddDDLSQL(MapAttrAttr.CSSCtrl, "0", "自定义样式", MapAttrString.SQLOfCSSAttr, true); #endregion 傻瓜表单 //参数字段. map.ParaFields = "NumMin,NumMax,NumStepLength"; #region 执行的方法. map.AddGroupMethod("基本功能"); RefMethod rm = new RefMethod(); rm = new RefMethod(); rm.Title = "正则表达式"; rm.ClassMethodName = this.ToString() + ".DoRegularExpression()"; rm.RefMethodType = RefMethodType.RightFrameOpen; rm.Icon = "icon-settings"; //正则表达式 map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "事件绑函数"; rm.ClassMethodName = this.ToString() + ".BindFunction()"; rm.RefMethodType = RefMethodType.RightFrameOpen; rm.Icon = "icon-puzzle"; //事件绑定函数。 map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "字段计算"; rm.ClassMethodName = this.ToString() + ".DoAutoFull()"; rm.RefMethodType = RefMethodType.RightFrameOpen; rm.Icon = "icon-energy"; //取多个字段计算结果. map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "对从表列计算"; rm.ClassMethodName = this.ToString() + ".DoAutoFullDtlField()"; rm.RefMethodType = RefMethodType.RightFrameOpen; rm.Icon = "icon-energy"; //取多个字段计算结果. map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "求两个日期天数"; rm.ClassMethodName = this.ToString() + ".DoReqDays()"; rm.RefMethodType = RefMethodType.RightFrameOpen; rm.Icon = "icon-energy"; //取多个字段计算结果. map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "设置文本框RMB大写"; rm.ClassMethodName = this.ToString() + ".DoRMBDaXie()"; rm.RefMethodType = RefMethodType.RightFrameOpen; rm.Icon = "icon-wrench"; map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "输入范围限制"; rm.ClassMethodName = this.ToString() + ".DoLimit()"; rm.RefMethodType = RefMethodType.RightFrameOpen; rm.Icon = "icon-wrench"; map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "全局风格定义"; rm.ClassMethodName = this.ToString() + ".DoGloValStyles()"; rm.RefMethodType = RefMethodType.LinkeWinOpen; rm.Icon = "icon-wrench"; rm.RefAttrKey = MapAttrAttr.CSSCtrl; map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "字段名链接"; rm.ClassMethodName = this.ToString() + ".DoFieldNameLink()"; rm.RefMethodType = RefMethodType.RightFrameOpen; rm.Icon = "icon-settings"; map.AddRefMethod(rm); #endregion 执行的方法. this._enMap = map; return this._enMap; } } public string DoFieldNameLink() { return "../../Admin/FoolFormDesigner/MapExt/FieldNameLink.htm?FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + this.KeyOfEn; } protected override bool beforeUpdateInsertAction() { #region 修改默认值. //如果没默认值. if (DataType.IsNullOrEmpty(this.DefVal) && this.DefValType == 0) this.DefVal = MapAttrAttr.DefaultVal; MapData md = new MapData(); md.No = this.FK_MapData; if (md.RetrieveFromDBSources() == 1) { //修改默认值. if (this.MyDataType == BP.DA.DataType.AppInt) BP.DA.DBAccess.UpdateTableColumnDefaultVal(md.PTable, this.KeyOfEn, int.Parse(this.DefVal)); if (this.MyDataType == BP.DA.DataType.AppDouble) BP.DA.DBAccess.UpdateTableColumnDefaultVal(md.PTable, this.KeyOfEn, double.Parse(this.DefVal)); if (this.MyDataType == BP.DA.DataType.AppFloat) BP.DA.DBAccess.UpdateTableColumnDefaultVal(md.PTable, this.KeyOfEn, float.Parse(this.DefVal)); if (this.MyDataType == BP.DA.DataType.AppMoney) BP.DA.DBAccess.UpdateTableColumnDefaultVal(md.PTable, this.KeyOfEn, decimal.Parse(this.DefVal)); //清空对应的表单的row值 GEEntity en = new GEEntity(this.FK_MapData); en.Row = null; } #endregion 修改默认值. MapAttr attr = new MapAttr(); attr.setMyPK(this.MyPK); attr.RetrieveFromDBSources(); //是否显示合计 attr.IsSum = this.GetValBooleanByKey("ExtIsSum"); attr.Update(); return base.beforeUpdateInsertAction(); } protected override void afterInsertUpdateAction() { MapAttr mapAttr = new MapAttr(); mapAttr.setMyPK(this.MyPK); mapAttr.RetrieveFromDBSources(); mapAttr.Update(); //调用frmEditAction, 完成其他的操作. BP.Sys.CCFormAPI.AfterFrmEditAction(this.FK_MapData); base.afterInsertUpdateAction(); } /// /// 删除后清缓存 /// protected override void afterDelete() { //删除相对应的rpt表中的字段 if (this.FK_MapData.Contains("ND") == true) { string fk_mapData = this.FK_MapData.Substring(0, this.FK_MapData.Length - 2) + "Rpt"; string sql = "DELETE FROM Sys_MapAttr WHERE FK_MapData='" + fk_mapData + "' AND KeyOfEn='" + this.KeyOfEn + "'"; DBAccess.RunSQL(sql); } //调用frmEditAction, 完成其他的操作. BP.Sys.CCFormAPI.AfterFrmEditAction(this.FK_MapData); base.afterDelete(); } #endregion #region 基本功能. /// /// 人民币大写 /// /// public string DoRMBDaXie() { return "../../Admin/FoolFormDesigner/MapExt/RMBDaXie.htm?FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + this.KeyOfEn; } /// /// 求天数 /// /// public string DoReqDays() { return "../../Admin/FoolFormDesigner/MapExt/ReqDays.htm?FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + this.KeyOfEn; } /// /// 绑定函数 /// /// public string BindFunction() { return "../../Admin/FoolFormDesigner/MapExt/BindFunction.htm?FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + this.KeyOfEn + "&T=" + DateTime.Now.ToString(); } #endregion #region 方法执行. public string DoLimit() { return "../../Admin/FoolFormDesigner/MapExt/NumEnterLimit.htm?&MyPK=" + this.MyPK + "&FrmID=" + this.FK_MapData + "&KeyOfEn=" + this.KeyOfEn; } public string DoAutoFullDtlField() { return "../../Admin/FoolFormDesigner/MapExt/AutoFullDtlField.htm?FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + this.KeyOfEn; } /// /// 自动计算 /// /// public string DoAutoFull() { return "../../Admin/FoolFormDesigner/MapExt/AutoFull.htm?FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + this.KeyOfEn; } /// /// 设置开窗返回值 /// /// public string DoPopVal() { return "../../Admin/FoolFormDesigner/MapExt/PopVal.htm?FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + this.KeyOfEn + "&MyPK=" + this.MyPK; } /// /// 正则表达式 /// /// public string DoRegularExpression() { return "../../Admin/FoolFormDesigner/MapExt/RegularExpressionNum.htm?FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + this.KeyOfEn + "&MyPK=" + this.MyPK; } /// /// 文本框自动完成 /// /// public string DoTBFullCtrl() { return "../../Admin/FoolFormDesigner/MapExt/TBFullCtrl.htm?FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + this.KeyOfEn + "&MyPK=" + this.MyPK; } /// /// 扩展控件 /// /// public string DoEditFExtContral() { return "../../Admin/FoolFormDesigner/EditFExtContral.htm?FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + this.KeyOfEn + "&MyPK=" + this.MyPK; } public string DoGloValStyles() { return "../../Admin/FoolFormDesigner/StyletDfine/GloValStyles.htm?FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + this.KeyOfEn + "&MyPK=" + this.MyPK; } #endregion 方法执行. } /// /// 实体属性s /// public class MapAttrNums : EntitiesMyPK { #region 构造 /// /// 实体属性s /// public MapAttrNums() { } /// /// 得到它的 Entity /// public override Entity GetNewEntity { get { return new MapAttrNum(); } } #endregion #region 为了适应自动翻译成java的需要,把实体转换成List. /// /// 转化成 java list,C#不能调用. /// /// List public System.Collections.Generic.IList ToJavaList() { return (System.Collections.Generic.IList)this; } /// /// 转化成list /// /// List public System.Collections.Generic.List Tolist() { System.Collections.Generic.List list = new System.Collections.Generic.List(); for (int i = 0; i < this.Count; i++) { list.Add((MapAttrNum)this[i]); } return list; } #endregion 为了适应自动翻译成java的需要,把实体转换成List. } }