/// <summary> /// 将实体字段处理后返回,例如删除不需要显示或更改的字段 /// </summary> /// <param name="fields">实体上的所有字段</param> /// <returns>处理后的字段</returns> protected virtual FieldItemEx[] InitFields(FieldItemEx[] fields) { bool needSort = true; while (needSort) { needSort = false; for (int i = 0; i < fields.Length - 1; i++) { if (fields[i].Field.Column.Order > fields[i + 1].Field.Column.Order) { FieldItemEx temp = fields[i]; fields[i] = fields[i + 1]; fields[i + 1] = temp; needSort = true; } } } return(fields); }
/// <summary> /// 初始化窗体 /// </summary> private void InitForm() { String PKName = null; // 处理扩展字段 if (Entity <TEntity> .Meta.Table.Relations != null && Entity <TEntity> .Meta.Table.Relations.Length > 0) { InitExtFields(Entity <TEntity> .Meta.Table.Relations, RelationsDropDownList, RelationsTriggerBox); } #region 处理所字段 FieldItemEx[] fieldEx = new FieldItemEx[Entity <TEntity> .Meta.Fields.Length]; for (int i = 0; i < Entity <TEntity> .Meta.Fields.Length; i++) { fieldEx[i] = Entity <TEntity> .Meta.Fields[i]; } foreach (FieldItemEx fieldItemEx in InitFields(fieldEx)) { FieldItem Field = fieldItemEx.Field; String pname = Field.Name; if (Field.PrimaryKey) { PKName = pname; continue; } String frmName = "frm" + pname; TypeCode code = Type.GetTypeCode(Field.Type); #region 初始化界面控件 switch (code) { case TypeCode.Boolean: ExtAspNet.CheckBox CheckBoxTextBox = new ExtAspNet.CheckBox(); CheckBoxTextBox.ID = frmName; CheckBoxTextBox.Label = Field.Description; CheckBoxTextBox.ShowRedStar = !Field.IsNullable; CheckBoxTextBox.Enabled = fieldItemEx.Editabled; (ExtSimpleForm as ExtAspNet.SimpleForm).Items.Add(CheckBoxTextBox); break; case TypeCode.Byte: break; case TypeCode.Char: break; case TypeCode.DBNull: break; case TypeCode.DateTime: ExtAspNet.DatePicker DateTimeTextBox = new ExtAspNet.DatePicker(); DateTimeTextBox.ID = frmName; DateTimeTextBox.Label = Field.Description; DateTimeTextBox.Required = !Field.IsNullable; DateTimeTextBox.ShowRedStar = !Field.IsNullable; DateTimeTextBox.Enabled = fieldItemEx.Editabled; (ExtSimpleForm as ExtAspNet.SimpleForm).Items.Add(DateTimeTextBox); break; case TypeCode.Decimal: ExtAspNet.NumberBox DecimaltBox = new ExtAspNet.NumberBox(); DecimaltBox.ID = frmName; DecimaltBox.Label = Field.Description; DecimaltBox.NoDecimal = false; DecimaltBox.Required = !Field.IsNullable; DecimaltBox.ShowRedStar = !Field.IsNullable; DecimaltBox.Enabled = fieldItemEx.Editabled; (ExtSimpleForm as ExtAspNet.SimpleForm).Items.Add(DecimaltBox); break; case TypeCode.Double: ExtAspNet.NumberBox DoubleTextBox = new ExtAspNet.NumberBox(); DoubleTextBox.ID = frmName; DoubleTextBox.Label = Field.Description; DoubleTextBox.NoDecimal = false; DoubleTextBox.Required = !Field.IsNullable; DoubleTextBox.ShowRedStar = !Field.IsNullable; DoubleTextBox.Enabled = fieldItemEx.Editabled; (ExtSimpleForm as ExtAspNet.SimpleForm).Items.Add(DoubleTextBox); break; case TypeCode.Empty: break; case TypeCode.Int16: break; case TypeCode.Int32: if (RelationsDropDownList.ContainsKey(Field.Name)) { RelationsDropDownList[Field.Name].Label = Field.Description; RelationsDropDownList[Field.Name].DataBind(); RelationsDropDownList[Field.Name].Enabled = fieldItemEx.Editabled; (ExtSimpleForm as ExtAspNet.SimpleForm).Items.Add(RelationsDropDownList[Field.Name]); } else { ExtAspNet.NumberBox Int32TextBox = new ExtAspNet.NumberBox(); Int32TextBox.ID = frmName; Int32TextBox.Label = Field.Description; Int32TextBox.Required = true; Int32TextBox.ShowRedStar = true; Int32TextBox.Required = !Field.IsNullable; Int32TextBox.ShowRedStar = !Field.IsNullable; Int32TextBox.Enabled = fieldItemEx.Editabled; (ExtSimpleForm as ExtAspNet.SimpleForm).Items.Add(Int32TextBox); } break; case TypeCode.Int64: break; case TypeCode.Object: break; case TypeCode.SByte: break; case TypeCode.Single: break; case TypeCode.String: #region String if (pname.Equals("Password", StringComparison.OrdinalIgnoreCase) || pname.Equals("Pass", StringComparison.OrdinalIgnoreCase)) { ExtAspNet.TextBox TextBoxP = new ExtAspNet.TextBox(); TextBoxP.ID = frmName; TextBoxP.Label = Field.Description; TextBoxP.TextMode = TextMode.Password; TextBoxP.Required = !Field.IsNullable; TextBoxP.ShowRedStar = TextBoxP.Required; TextBoxP.Enabled = fieldItemEx.Editabled; (ExtSimpleForm as ExtAspNet.SimpleForm).Items.Add(TextBoxP); } else if (Field.Length > 300 || Field.Length < 0) { ExtAspNet.TextArea TextBoxP = new ExtAspNet.TextArea(); TextBoxP.ID = frmName; TextBoxP.Label = Field.Description; TextBoxP.Required = !Field.IsNullable; TextBoxP.ShowRedStar = TextBoxP.Required; TextBoxP.Enabled = fieldItemEx.Editabled; (ExtSimpleForm as ExtAspNet.SimpleForm).Items.Add(TextBoxP); } else { ExtAspNet.TextBox TextBoxP = new ExtAspNet.TextBox(); TextBoxP.ID = frmName; TextBoxP.Label = Field.Description; TextBoxP.TextMode = TextMode.Text; TextBoxP.Required = !Field.IsNullable; TextBoxP.ShowRedStar = TextBoxP.Required; TextBoxP.Enabled = fieldItemEx.Editabled; (ExtSimpleForm as ExtAspNet.SimpleForm).Items.Add(TextBoxP); } #endregion break; case TypeCode.UInt16: break; case TypeCode.UInt32: break; case TypeCode.UInt64: break; default: break; } #endregion } #endregion }