//验证数据 bool Validate() { foreach (CBaseObject obj in ViewDetail.ColumnInViewDetailMgr.GetList()) { CColumnInViewDetail civd = (CColumnInViewDetail)obj; CColumn col = (CColumn)BaseObjectMgr.Table.ColumnMgr.Find(civd.FW_Column_id); if (col == null) { continue; } //判断禁止和只读权限字段 if (m_sortRestrictColumnAccessType.ContainsKey(col.Id)) { AccessType accessType = m_sortRestrictColumnAccessType[col.Id]; if (accessType == AccessType.forbide) { continue; } else if (accessType == AccessType.read) { continue; } } // if (col.Code.Equals("id", StringComparison.OrdinalIgnoreCase)) { continue; } else if (col.Code.Equals("Created", StringComparison.OrdinalIgnoreCase)) { continue; } else if (col.Code.Equals("Creator", StringComparison.OrdinalIgnoreCase)) { continue; } else if (col.Code.Equals("Updated", StringComparison.OrdinalIgnoreCase)) { continue; } else if (col.Code.Equals("Updator", StringComparison.OrdinalIgnoreCase)) { continue; } Control[] ctrls = this.Controls.Find(col.Code, false); if (ctrls.Length == 0) { continue; } IColumnCtrl ctrl = (IColumnCtrl)ctrls[0]; object val = ctrl.GetValue(); if (!col.AllowNull && (val == null || val.ToString() == "")) { MessageBox.Show(string.Format("{0}不允许空!", col.Name), "错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return(false); } if (col.ColType == ColumnType.string_type) { if (val.ToString().Length > col.ColLen) { MessageBox.Show(string.Format("{0}长度不能超过{1}!", col.Name, col.ColLen), "错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return(false); } } else if (col.ColType == ColumnType.datetime_type) { if (!(val == null || val.ToString() == "")) { try { Convert.ToDateTime(val); } catch { MessageBox.Show(string.Format("{0}日期格式错误!", col.Name), "错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return(false); } } } else if (col.ColType == ColumnType.int_type || col.ColType == ColumnType.long_type) { if (!CUtil.IsInt(val.ToString())) { MessageBox.Show(string.Format("{0}为整型数字!", col.Name), "错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return(false); } } else if (col.ColType == ColumnType.numeric_type) { if (!CUtil.IsNum(val.ToString())) { MessageBox.Show(string.Format("{0}为数字!", col.Name), "错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return(false); } } else if (col.ColType == ColumnType.guid_type || col.ColType == ColumnType.ref_type) { if (!(val == null || val.ToString() == "")) { try { Guid guid = new Guid(val.ToString()); } catch { MessageBox.Show(string.Format("{0}为GUID格式!", col.Name), "错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return(false); } } } } return(true); }
Control ColumnMapControl(CColumn col) { //自扩展类优先 if (!string.IsNullOrEmpty(col.UIControl)) { try { object obj = Activator.CreateInstance(Type.GetType(col.UIControl)); IColumnCtrl ctrl = (IColumnCtrl)obj; ctrl.SetCaption(col.Name + ":"); if (BaseObject != null) { ctrl.SetValue(BaseObject.GetColValue(col)); } return((Control)ctrl); } catch { } } switch (col.ColType) { case ColumnType.string_type: { ExTextBox ctrl = new ExTextBox(); ctrl.Width = 300; ctrl.SetCaption(col.Name + ":"); if (BaseObject != null) { ctrl.SetValue(BaseObject.GetColValue(col)); } return(ctrl); break; } case ColumnType.text_type: { ExTextBox ctrl = new ExTextBox(); ctrl.textBox.Multiline = true; ctrl.textBox.ScrollBars = ScrollBars.Both; ctrl.Width = 300; ctrl.Height = 100; ctrl.SetCaption(col.Name + ":"); if (BaseObject != null) { ctrl.SetValue(BaseObject.GetColValue(col)); } return(ctrl); break; } case ColumnType.int_type: { ExTextBox ctrl = new ExTextBox(); ctrl.Width = 300; ctrl.SetCaption(col.Name + ":"); if (BaseObject != null) { ctrl.SetValue(BaseObject.GetColValue(col)); } return(ctrl); break; } case ColumnType.ref_type: { ExComboBox ctrl = new ExComboBox(); ctrl.Width = 300; CTable table = (CTable)Program.Ctx.TableMgr.Find(col.RefTable); CBaseObjectMgr BaseObjectMgr = new CBaseObjectMgr(); BaseObjectMgr.TbCode = table.Code; BaseObjectMgr.Ctx = Program.Ctx; CColumn RefCol = (CColumn)table.ColumnMgr.Find(col.RefCol); CColumn RefShowCol = (CColumn)table.ColumnMgr.Find(col.RefShowCol); List <CBaseObject> lstObj = BaseObjectMgr.GetList(); foreach (CBaseObject obj in lstObj) { DataItem item = new DataItem(); item.name = obj.GetColValue(RefShowCol).ToString(); item.Data = obj.GetColValue(RefCol); ctrl.comboBox.Items.Add(item); } ctrl.comboBox.DropDownStyle = ComboBoxStyle.DropDownList; ctrl.SetCaption(col.Name + ":"); if (BaseObject != null) { ctrl.SetValue(BaseObject.GetColValue(col)); } return(ctrl); break; } case ColumnType.enum_type: { ExComboBox ctrl = new ExComboBox(); ctrl.Width = 300; //引用显示字段优先 if (col.RefShowCol != Guid.Empty) { CTable table = (CTable)Program.Ctx.TableMgr.Find(col.RefTable); CBaseObjectMgr BaseObjectMgr = new CBaseObjectMgr(); BaseObjectMgr.TbCode = table.Code; BaseObjectMgr.Ctx = Program.Ctx; CColumn RefShowCol = (CColumn)table.ColumnMgr.Find(col.RefShowCol); List <CBaseObject> lstObj = BaseObjectMgr.GetList(); foreach (CBaseObject obj in lstObj) { DataItem item = new DataItem(); item.name = obj.GetColValue(RefShowCol).ToString(); ctrl.comboBox.Items.Add(item); } } else { List <CBaseObject> lstObj = col.ColumnEnumValMgr.GetList(); foreach (CBaseObject obj in lstObj) { CColumnEnumVal cev = (CColumnEnumVal)obj; DataItem item = new DataItem(); item.name = cev.Val; item.Data = cev.Val; ctrl.comboBox.Items.Add(item); } } ctrl.comboBox.DropDownStyle = ComboBoxStyle.DropDown; ctrl.SetCaption(col.Name + ":"); if (BaseObject != null) { ctrl.SetValue(BaseObject.GetColValue(col)); } return(ctrl); break; } case ColumnType.long_type: { ExTextBox ctrl = new ExTextBox(); ctrl.Width = 300; ctrl.SetCaption(col.Name + ":"); if (BaseObject != null) { ctrl.SetValue(BaseObject.GetColValue(col)); } return(ctrl); } case ColumnType.bool_type: { ExCheckBox ctrl = new ExCheckBox(); ctrl.Width = 300; ctrl.SetCaption(col.Name + ":"); if (BaseObject != null) { ctrl.SetValue(BaseObject.GetColValue(col)); } return(ctrl); break; } case ColumnType.numeric_type: { ExTextBox ctrl = new ExTextBox(); ctrl.Width = 300; ctrl.SetCaption(col.Name + ":"); if (BaseObject != null) { ctrl.SetValue(BaseObject.GetColValue(col)); } return(ctrl); break; } case ColumnType.datetime_type: { ExDateTimePicker ctrl = new ExDateTimePicker(); ctrl.Width = 300; ctrl.SetCaption(col.Name + ":"); if (BaseObject != null) { ctrl.SetValue(BaseObject.GetColValue(col)); } return(ctrl); break; } case ColumnType.object_type: { BinaryCtrl ctrl = new BinaryCtrl(); ctrl.SetCaption(col.Name + ":"); if (BaseObject != null) { ctrl.SetValue(BaseObject.GetColValue(col)); } return(ctrl); break; } } return(new ExTextBox()); }
public bool Save() { if (!Validate()) { return(false); } if (baseObject == null) //新建 { baseObject = BaseObjectMgr.CreateBaseObject(); baseObject.Ctx = BaseObjectMgr.Ctx; baseObject.TbCode = BaseObjectMgr.TbCode; bool bHasVisible = false; foreach (CBaseObject obj in ViewDetail.ColumnInViewDetailMgr.GetList()) { CColumnInViewDetail civd = (CColumnInViewDetail)obj; CColumn col = (CColumn)BaseObjectMgr.Table.ColumnMgr.Find(civd.FW_Column_id); if (col == null) { continue; } //判断禁止和只读权限字段 if (m_sortRestrictColumnAccessType.ContainsKey(col.Id)) { AccessType accessType = m_sortRestrictColumnAccessType[col.Id]; if (accessType == AccessType.forbide) { continue; } else if (accessType == AccessType.read) { continue; } } // if (col.Code.Equals("id", StringComparison.OrdinalIgnoreCase)) { continue; } else if (col.Code.Equals("Created", StringComparison.OrdinalIgnoreCase)) { continue; } else if (col.Code.Equals("Creator", StringComparison.OrdinalIgnoreCase)) { baseObject.SetColValue(col, Program.User.Id); continue; } else if (col.Code.Equals("Updated", StringComparison.OrdinalIgnoreCase)) { continue; } else if (col.Code.Equals("Updator", StringComparison.OrdinalIgnoreCase)) { baseObject.SetColValue(col, Program.User.Id); continue; } Control[] ctrls = this.Controls.Find(col.Code, false); if (ctrls.Length > 0) { IColumnCtrl ctrl = (IColumnCtrl)ctrls[0]; baseObject.SetColValue(col, ctrl.GetValue()); bHasVisible = true; } } //外键关联 CBaseObject objP = BaseObjectMgr.m_Parent; CColumn colP = (CColumn)objP.Table.ColumnMgr.Find(viewDetail.PrimaryKey); CColumn colF = (CColumn)BaseObjectMgr.Table.ColumnMgr.Find(viewDetail.ForeignKey); BaseObject.SetColValue(colF, objP.GetColValue(colP)); if (!bHasVisible) { MessageBox.Show("没有可修改字段!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return(false); } if (!BaseObjectMgr.AddNew(baseObject, true)) { MessageBox.Show("添加失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return(false); } } else //修改 { List <CBaseObject> lstCol = BaseObjectMgr.Table.ColumnMgr.GetList(); bool bHasVisible = false; foreach (CBaseObject obj in lstCol) { CColumn col = (CColumn)obj; //判断禁止和只读权限字段 if (m_sortRestrictColumnAccessType.ContainsKey(col.Id)) { AccessType accessType = m_sortRestrictColumnAccessType[col.Id]; if (accessType == AccessType.forbide) { continue; } else if (accessType == AccessType.read) { continue; } } // if (col.Code.Equals("id", StringComparison.OrdinalIgnoreCase)) { continue; } else if (col.Code.Equals("Created", StringComparison.OrdinalIgnoreCase)) { continue; } else if (col.Code.Equals("Creator", StringComparison.OrdinalIgnoreCase)) { continue; } else if (col.Code.Equals("Updated", StringComparison.OrdinalIgnoreCase)) { baseObject.SetColValue(col, DateTime.Now); continue; } else if (col.Code.Equals("Updator", StringComparison.OrdinalIgnoreCase)) { baseObject.SetColValue(col, Program.User.Id); continue; } Control[] ctrls = this.Controls.Find(col.Code, false); if (ctrls.Length > 0) { IColumnCtrl ctrl = (IColumnCtrl)ctrls[0]; baseObject.SetColValue(col, ctrl.GetValue()); bHasVisible = true; } } if (!bHasVisible) { MessageBox.Show("没有可修改字段!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return(false); } if (!BaseObjectMgr.Update(baseObject, true)) { MessageBox.Show("修改失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return(false); } } return(true); }
public bool Save() { if (!Validate()) { return(false); } List <CBaseObject> lstCol = BaseObjectMgr.Table.ColumnMgr.GetList(); bool bHasVisible = false; foreach (CBaseObject obj in lstCol) { CColumn col = (CColumn)obj; //判断禁止和只读权限字段 if (m_sortRestrictColumnAccessType.ContainsKey(col.Id)) { AccessType accessType = m_sortRestrictColumnAccessType[col.Id]; if (accessType == AccessType.forbide) { continue; } else if (accessType == AccessType.read) { continue; } } // if (col.Code.Equals("id", StringComparison.OrdinalIgnoreCase)) { continue; } else if (col.Code.Equals("Created", StringComparison.OrdinalIgnoreCase)) { continue; } else if (col.Code.Equals("Creator", StringComparison.OrdinalIgnoreCase)) { continue; } else if (col.Code.Equals("Updated", StringComparison.OrdinalIgnoreCase)) { BaseObject.SetColValue(col, DateTime.Now); continue; } else if (col.Code.Equals("Updator", StringComparison.OrdinalIgnoreCase)) { BaseObject.SetColValue(col, Program.User.Id); continue; } Control[] ctrls = this.Controls.Find(col.Code, false); if (ctrls.Length > 0) { IColumnCtrl ctrl = (IColumnCtrl)ctrls[0]; BaseObject.SetColValue(col, ctrl.GetValue()); bHasVisible = true; } } if (!bHasVisible) { MessageBox.Show("没有可修改字段!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return(false); } if (m_bIsNew) { BaseObjectMgr.AddNew(BaseObject); } else { BaseObjectMgr.Update(BaseObject); } if (!BaseObjectMgr.Save()) { MessageBox.Show("修改失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return(false); } return(true); }