/// <summary> /// Constructor for the class /// </summary> /// <param name="frm">The parent form</param> /// <param name="field">The fied to be edited</param> public YesNoFieldDefinition(MainForm frm, YesNoField field) : base(frm) { InitializeComponent(); this.mode = FormMode.Edit; this.field = field; this.page = field.Page; LoadFormData(); }
/// <summary> /// Constructor for the class /// </summary> /// <param name="frm">The parent form</param> /// <param name="field">The fied to be edited</param> public YesNoFieldDefinition(MainForm frm, YesNoField field) : base(frm) { InitializeComponent(); this.mode = FormMode.Edit; this.field = field; this.page = field.Page; LoadFormData(); }
private List <Control> GetControls(YesNoField field, Size canvasSize) { Epi.Windows.Controls.DragableComboBox comboBox = new DragableComboBox(); comboBox.Width = defaultControlWidth; SetControlProperties(comboBox, field, canvasSize); comboBox.DropDownStyle = ComboBoxStyle.DropDown; comboBox.FlatStyle = flatStyle; Configuration config = Configuration.GetNewInstance(); comboBox.Items.Add(config.Settings.RepresentationOfYes); comboBox.Items.Add(config.Settings.RepresentationOfNo); DragableLabel prompt = GetPrompt(comboBox, field, canvasSize); List <Control> controls = new List <Control>(); controls.Add(prompt); controls.Add(comboBox); return(controls); }
private List<Control> GetControls(YesNoField field, Size canvasSize) { ComboBox comboBox = new Epi.Windows.Enter.Controls.LegalValuesComboBox();//ComboBox(); SetControlProperties(comboBox, field, canvasSize); comboBox.DropDownStyle = ComboBoxStyle.DropDown;//ComboBoxStyle.DropDownList; comboBox.AutoCompleteSource = AutoCompleteSource.ListItems; comboBox.FlatStyle = FlatStyle.Standard; DataTable dt = new DataTable(); dt.Columns.Add("name", typeof(string)); dt.Columns.Add("value", typeof(int)); DataRow dr; dr = dt.NewRow(); dr["name"] = config.Settings.RepresentationOfYes; dr["value"] = Constants.YES; dt.Rows.Add(dr); dr = dt.NewRow(); dr["name"] = config.Settings.RepresentationOfNo; dr["value"] = Constants.NO; dt.Rows.Add(dr); comboBox.ValueMember = "value"; comboBox.DisplayMember = "name"; comboBox.DataSource = dt; // Create Prompt Label prompt = GetPrompt(comboBox, field, canvasSize); List<Control> controls = new List<Control>(); controls.Add(prompt); controls.Add(comboBox); if (fieldControls.ContainsKey(field)) { fieldControls[field] = controls; } else { fieldControls.Add(field, controls); } if (field.CurrentRecordValueObject == null || string.IsNullOrEmpty(field.CurrentRecordValueString)) { comboBox.SelectedIndex = -1; } else { comboBox.SelectedItem = field.CurrentRecordValueString; } return controls; }
/// <summary> /// Get the YesNo Field Data into the control /// </summary> /// <param name="field">YesNo Field</param> /// <param name="control">ComboBox</param> private void GetFieldDataIntoControl(YesNoField field, ComboBox control) { //if (field.CurrentRecordValueObject == null || (control.Items.Contains(field.CurrentRecordValueObject) == false)) if (field.CurrentRecordValueObject == null) { control.SelectedIndex = -1; } else { control.SelectedValue = field.CurrentRecordValueObject; } }
/// <summary> /// Update Yes/No field. /// </summary> /// <param name="field">Yes/No field to update.</param> public void UpdateField(YesNoField field) { try { #region InputValidation if (field == null) { throw new ArgumentNullException("YesNoField"); } #endregion Query updateQuery = db.CreateQuery("update metaFields set [ControlHeightPercentage] = @ControlHeightPercentage, [ControlLeftPositionPercentage] = @ControlLeftPositionPercentage, " + "[ControlTopPositionPercentage] = @ControlTopPositionPercentage, [ControlWidthPercentage] = @ControlWidthPercentage, [HasTabStop] = @HasTabStop, [IsReadOnly] = @IsReadOnly, " + "[IsRequired] = @IsRequired, [Name] = @Name, [PageId] = @PageId, [PromptFontFamily] = @PromptFontFamily, " + "[PromptFontStyle] = @PromptFontStyle, [PromptFontSize] = @PromptFontSize, [PromptLeftPositionPercentage] = @PromptLeftPositionPercentage, " + "[PromptText] = @PromptText, [PromptTopPositionPercentage] = @PromptTopPositionPercentage, [ShouldRepeatLast] = @ShouldRepeatLast, " + "[TabIndex] = @TabIndex, [FieldTypeId] = @FieldTypeId where [UniqueId] = @UniqueId"); updateQuery.Parameters.Add(new QueryParameter("@ControlHeightPercentage", DbType.Double, field.ControlHeightPercentage)); updateQuery.Parameters.Add(new QueryParameter("@ControlLeftPositionPercentage", DbType.Double, field.ControlLeftPositionPercentage)); updateQuery.Parameters.Add(new QueryParameter("@ControlTopPositionPercentage", DbType.Double, field.ControlTopPositionPercentage)); updateQuery.Parameters.Add(new QueryParameter("@ControlWidthPercentage", DbType.Double, field.ControlWidthPercentage)); updateQuery.Parameters.Add(new QueryParameter("@HasTabStop", DbType.Boolean, field.HasTabStop)); updateQuery.Parameters.Add(new QueryParameter("@IsReadOnly", DbType.Boolean, field.IsReadOnly)); updateQuery.Parameters.Add(new QueryParameter("@IsRequired", DbType.Boolean, field.IsRequired)); updateQuery.Parameters.Add(new QueryParameter("@Name", DbType.String, field.Name)); updateQuery.Parameters.Add(new QueryParameter("@PageId", DbType.Int32, field.Page.Id)); updateQuery.Parameters.Add(new QueryParameter("@PromptFontFamily", DbType.String, field.PromptFont.Name)); updateQuery.Parameters.Add(new QueryParameter("@PromptFontStyle", DbType.String, field.PromptFont.Style.ToString())); updateQuery.Parameters.Add(new QueryParameter("@PromptFontSize", DbType.Double, field.PromptFont.Size)); updateQuery.Parameters.Add(new QueryParameter("@PromptLeftPositionPercentage", DbType.Double, field.PromptLeftPositionPercentage)); updateQuery.Parameters.Add(new QueryParameter("@PromptText", DbType.String, field.PromptText)); updateQuery.Parameters.Add(new QueryParameter("@PromptTopPositionPercentage", DbType.Double, field.PromptTopPositionPercentage)); updateQuery.Parameters.Add(new QueryParameter("@ShouldRepeatLast", DbType.Boolean, field.ShouldRepeatLast)); updateQuery.Parameters.Add(new QueryParameter("@TabIndex", DbType.Int32, field.TabIndex)); updateQuery.Parameters.Add(new QueryParameter("@FieldTypeId", DbType.Int32, (int)field.FieldType)); updateQuery.Parameters.Add(new QueryParameter("@UniqueId", DbType.Guid, field.UniqueId)); db.ExecuteNonQuery(updateQuery); } catch (Exception ex) { throw new GeneralException("Could not update YesNoField in the database", ex); } finally { } }
/// <summary> /// Gets all the fields in a view /// </summary> /// <param name="view">A view object</param> /// <returns>A collection of fields</returns> public virtual FieldCollectionMaster GetFields(View view) { FieldCollectionMaster fields = new FieldCollectionMaster(); try { DataTable table = GetFieldsAsDataTable(view); foreach (DataRow row in table.Rows) { MetaFieldType fieldTypeId = (MetaFieldType)row[ColumnNames.FIELD_TYPE_ID]; Field field = null; switch (fieldTypeId) { case MetaFieldType.Text: field = new SingleLineTextField(view); field.LoadFromRow(row); break; case MetaFieldType.LabelTitle: field = new LabelField(view); field.LoadFromRow(row); break; case MetaFieldType.TextUppercase: field = new UpperCaseTextField(view); field.LoadFromRow(row); break; case MetaFieldType.Multiline: field = new MultilineTextField(view); field.LoadFromRow(row); break; case MetaFieldType.Number: field = new NumberField(view); field.LoadFromRow(row); break; case MetaFieldType.PhoneNumber: field = new PhoneNumberField(view); field.LoadFromRow(row); break; case MetaFieldType.Date: field = new DateField(view); field.LoadFromRow(row); break; case MetaFieldType.Time: field = new TimeField(view); field.LoadFromRow(row); break; case MetaFieldType.DateTime: field = new DateTimeField(view); field.LoadFromRow(row); break; case MetaFieldType.Checkbox: field = new CheckBoxField(view); field.LoadFromRow(row); break; case MetaFieldType.YesNo: field = new YesNoField(view); field.LoadFromRow(row); break; case MetaFieldType.Option: field = new OptionField(view); field.LoadFromRow(row); break; case MetaFieldType.CommandButton: field = new CommandButtonField(view); field.LoadFromRow(row); break; case MetaFieldType.Image: field = new ImageField(view); field.LoadFromRow(row); break; case MetaFieldType.Mirror: field = new MirrorField(view); field.LoadFromRow(row); break; case MetaFieldType.Grid: field = new GridField(view); field.LoadFromRow(row); break; case MetaFieldType.Group: field = new GroupField(view); field.LoadFromRow(row); break; case MetaFieldType.GUID: field = new GUIDField(view); field.LoadFromRow(row); break; case MetaFieldType.LegalValues: field = new DDLFieldOfLegalValues(view); field.LoadFromRow(row); break; case MetaFieldType.Codes: field = new DDLFieldOfCodes(view); ((DDLFieldOfCodes)field).LoadFromRow(row); //zack break; case MetaFieldType.List: field = new DDListField(view); ((DDListField)field).LoadFromRow(row); break; case MetaFieldType.CommentLegal: field = new DDLFieldOfCommentLegal(view); field.LoadFromRow(row); break; case MetaFieldType.Relate: field = new RelatedViewField(view); field.LoadFromRow(row); break; case MetaFieldType.RecStatus: field = new RecStatusField(view); field.LoadFromRow(row); break; case MetaFieldType.UniqueKey: field = new UniqueKeyField(view); field.LoadFromRow(row); break; case MetaFieldType.ForeignKey: field = new ForeignKeyField(view); field.LoadFromRow(row); break; case MetaFieldType.GlobalRecordId: field = new GlobalRecordIdField(view); field.LoadFromRow(row); break; default: throw new ApplicationException("Invalid Field Type"); } // Note: This check ideally shouldn't be necessary, but Epi 3.5.1 and previous versions actually do allow duplicate field names for group fields. if (fields.Contains(field)) { Logger.Log(DateTime.Now + ": " + string.Format("The {0} field with name \"{1}\" already exists in {2}. This field has not been imported.", field.GetType().ToString(), field.Name, view.Name)); } else { fields.Add(field); } } } catch (Exception ex) { } return (fields); }
///// <summary> ///// Gets a code table list. ///// </summary> ///// <returns>Code data tables.</returns> //DataSets.TableSchema.TablesDataTable GetCodeTableList() //{ // try // { // DataSets.TableSchema.TablesDataTable tables = db.GetCodeTableList(db); // //query.Parameters.Add(new DbParameter("@ProjectId", DbType.Guid, Project.Id)); // // return db.Select(query); // return tables; // } // catch (Exception ex) // { // throw new System.ApplicationException("Could not retrieve code tables from database", ex); // } //} /// <summary> /// Retrieves data for yes no field from xml metadata. /// </summary> /// <param name="field">A yes no field</param> /// <param name="fieldNode">XML node for yes no field.</param> public void GetFieldData(YesNoField field, XmlNode fieldNode) { }
/// <summary> /// Insert a YesNoField record into the metaFields table. /// </summary> /// <param name="field">Yes No field.</param> /// <returns>Returns the Id of the last YesNoField added.</returns> public int CreateField(YesNoField field) { try { #region InputValidation if (field == null) { throw new ArgumentNullException("YesNoField"); } #endregion Query insertQuery = db.CreateQuery("insert into metaFields([DataTableName], [ViewId], [UniqueId], [ControlFontFamily], [ControlFontStyle], [ControlFontSize], [ControlHeightPercentage], [ControlLeftPositionPercentage], [ControlTopPositionPercentage], [ControlWidthPercentage], [FieldTypeId], [HasTabStop], [IsReadOnly], [IsRequired], [Name], [PageId], [PromptFontFamily], [PromptFontStyle], [PromptFontSize], [PromptLeftPositionPercentage], [PromptText], [PromptTopPositionPercentage], [ShouldRepeatLast], [TabIndex], [CheckCodeBefore], [CheckCodeAfter]) " + "values (@DataTableName, @ViewId, @UniqueId, @ControlFontFamily, @ControlFontStyle, @ControlFontSize, @ControlHeightPercentage, @ControlLeftPositionPercentage, @ControlTopPositionPercentage, @ControlWidthPercentage, @FieldTypeId, @HasTabStop, @IsReadOnly, @IsRequired, @Name, @PageId, @PromptFontFamily, @PromptFontStyle, @PromptFontSize, @PromptLeftPositionPercentage, @PromptText, @PromptTopPositionPercentage, @ShouldRepeatLast, @TabIndex, @CheckCodeBefore, @CheckCodeAfter)"); insertQuery.Parameters.Add(new QueryParameter("@DataTableName", DbType.String, field.TableName)); insertQuery.Parameters.Add(new QueryParameter("@ViewId", DbType.Int32, field.GetView().Id)); insertQuery.Parameters.Add(new QueryParameter("@UniqueId", DbType.Guid, field.UniqueId)); insertQuery.Parameters.Add(new QueryParameter("@ControlFontFamily", DbType.String, field.ControlFont.Name)); insertQuery.Parameters.Add(new QueryParameter("@ControlFontStyle", DbType.String, field.ControlFont.Style.ToString())); insertQuery.Parameters.Add(new QueryParameter("@ControlFontSize", DbType.Double, field.ControlFont.Size)); insertQuery.Parameters.Add(new QueryParameter("@ControlHeightPercentage", DbType.Double, field.ControlHeightPercentage)); insertQuery.Parameters.Add(new QueryParameter("@ControlLeftPositionPercentage", DbType.Double, field.ControlLeftPositionPercentage)); insertQuery.Parameters.Add(new QueryParameter("@ControlTopPositionPercentage", DbType.Double, field.ControlTopPositionPercentage)); insertQuery.Parameters.Add(new QueryParameter("@ControlWidthPercentage", DbType.Double, field.ControlWidthPercentage)); insertQuery.Parameters.Add(new QueryParameter("@FieldTypeId", DbType.Int32, (int)field.FieldType)); insertQuery.Parameters.Add(new QueryParameter("@HasTabStop", DbType.Boolean, field.HasTabStop)); insertQuery.Parameters.Add(new QueryParameter("@IsReadOnly", DbType.Boolean, field.IsReadOnly)); insertQuery.Parameters.Add(new QueryParameter("@IsRequired", DbType.Boolean, field.IsRequired)); insertQuery.Parameters.Add(new QueryParameter("@Name", DbType.String, field.Name)); insertQuery.Parameters.Add(new QueryParameter("@PageId", DbType.Int32, field.Page.Id)); insertQuery.Parameters.Add(new QueryParameter("@PromptFontFamily", DbType.String, field.PromptFont.Name)); insertQuery.Parameters.Add(new QueryParameter("@PromptFontStyle", DbType.String, field.PromptFont.Style.ToString())); insertQuery.Parameters.Add(new QueryParameter("@PromptFontSize", DbType.Double, field.PromptFont.Size)); insertQuery.Parameters.Add(new QueryParameter("@PromptLeftPositionPercentage", DbType.Double, field.PromptLeftPositionPercentage)); insertQuery.Parameters.Add(new QueryParameter("@PromptText", DbType.String, field.PromptText)); insertQuery.Parameters.Add(new QueryParameter("@PromptTopPositionPercentage", DbType.Double, field.PromptTopPositionPercentage)); insertQuery.Parameters.Add(new QueryParameter("@ShouldRepeatLast", DbType.Boolean, field.ShouldRepeatLast)); insertQuery.Parameters.Add(new QueryParameter("@TabIndex", DbType.Int32, field.TabIndex)); insertQuery.Parameters.Add(new QueryParameter("@CheckCodeBefore", DbType.String, field.CheckCodeBefore)); insertQuery.Parameters.Add(new QueryParameter("@CheckCodeAfter", DbType.String, field.CheckCodeAfter)); db.ExecuteNonQuery(insertQuery); return GetMaxFieldId(field.GetView().Id); } catch (Exception ex) { throw new GeneralException("Could not create field in the database", ex); } finally { } }
/// <summary> /// Sets the appropriate properties for a given field, based on the specified column conversion information /// </summary> /// <param name="field">The Epi Info 7 field</param> /// <param name="cci">The column conversion information</param> private void SetFieldProperties(Field field, ColumnConversionInfo cci) { if (cci.Prompt == null) { cci.Prompt = cci.DestinationColumnName; } switch (field.FieldType) { case MetaFieldType.Checkbox: CheckBoxField checkboxField = (CheckBoxField)field; checkboxField.TabIndex = cci.TabIndex; checkboxField.IsReadOnly = cci.IsReadOnly; checkboxField.IsRequired = cci.IsRequired; checkboxField.ShouldRepeatLast = cci.IsRepeatLast; break; case MetaFieldType.YesNo: YesNoField yesNoField = (YesNoField)field; yesNoField.TabIndex = cci.TabIndex; yesNoField.IsReadOnly = cci.IsReadOnly; yesNoField.IsRequired = cci.IsRequired; yesNoField.ShouldRepeatLast = cci.IsRepeatLast; break; case MetaFieldType.Text: SingleLineTextField textField = (SingleLineTextField)field; textField.TabIndex = cci.TabIndex; textField.IsReadOnly = cci.IsReadOnly; textField.IsRequired = cci.IsRequired; textField.ShouldRepeatLast = cci.IsRepeatLast; if (cci.UpperBound is int) { textField.MaxLength = (int)cci.UpperBound; } break; case MetaFieldType.Multiline: MultilineTextField multilineTextField = (MultilineTextField)field; multilineTextField.TabIndex = cci.TabIndex; multilineTextField.IsReadOnly = cci.IsReadOnly; multilineTextField.IsRequired = cci.IsRequired; multilineTextField.ShouldRepeatLast = cci.IsRepeatLast; break; case MetaFieldType.Date: DateField dateField = (DateField)field; dateField.TabIndex = cci.TabIndex; dateField.IsReadOnly = cci.IsReadOnly; dateField.IsRequired = cci.IsRequired; dateField.ShouldRepeatLast = cci.IsRepeatLast; break; case MetaFieldType.DateTime: DateTimeField dateTimeField = (DateTimeField)field; dateTimeField.TabIndex = cci.TabIndex; dateTimeField.IsReadOnly = cci.IsReadOnly; dateTimeField.IsRequired = cci.IsRequired; dateTimeField.ShouldRepeatLast = cci.IsRepeatLast; break; case MetaFieldType.Time: TimeField timeField = (TimeField)field; timeField.TabIndex = cci.TabIndex; timeField.IsReadOnly = cci.IsReadOnly; timeField.IsRequired = cci.IsRequired; timeField.ShouldRepeatLast = cci.IsRepeatLast; break; case MetaFieldType.Number: NumberField numberField = (NumberField)field; numberField.TabIndex = cci.TabIndex; numberField.IsReadOnly = cci.IsReadOnly; numberField.IsRequired = cci.IsRequired; numberField.ShouldRepeatLast = cci.IsRepeatLast; break; case MetaFieldType.LegalValues: DDLFieldOfLegalValues legalValuesField = (DDLFieldOfLegalValues)field; legalValuesField.TabIndex = cci.TabIndex; legalValuesField.IsReadOnly = cci.IsReadOnly; legalValuesField.IsRequired = cci.IsRequired; legalValuesField.ShouldRepeatLast = cci.IsRepeatLast; if (string.IsNullOrEmpty(cci.ListSourceTableName)) { DataTable dt = new DataTable(cci.SourceColumnName); dt.Columns.Add(new DataColumn(cci.SourceColumnName, typeof(string))); // table is blank, so assume user wants to use a SELECT DISTINCT as the value source Query selectDistinctQuery = sourceDriver.CreateQuery("SELECT DISTINCT [" + cci.SourceColumnName + "] FROM [" + tableName + "]"); IDataReader distinctReader = sourceDriver.ExecuteReader(selectDistinctQuery); while (distinctReader.Read()) { dt.Rows.Add(distinctReader[0].ToString()); } cci.ListSourceTable = dt; cci.ListSourceTableName = cci.SourceColumnName; cci.ListSourceTextColumnName = cci.SourceColumnName; IDbDriver db = project.CollectedData.GetDatabase(); if (!db.TableExists(cci.ListSourceTableName)) { project.CreateCodeTable(cci.ListSourceTableName, cci.ListSourceTextColumnName); project.SaveCodeTableData(cci.ListSourceTable, cci.ListSourceTableName, cci.ListSourceTextColumnName); } legalValuesField.SourceTableName = cci.ListSourceTableName; legalValuesField.TextColumnName = cci.ListSourceTextColumnName; legalValuesField.CodeColumnName = cci.ListSourceTextColumnName; } else { IDbDriver db = project.CollectedData.GetDatabase(); if (!db.TableExists(cci.ListSourceTableName)) { project.CreateCodeTable(cci.ListSourceTableName, cci.ListSourceTextColumnName); string[] columns = new string[1]; columns[0] = cci.ListSourceTextColumnName; project.InsertCodeTableData(cci.ListSourceTable, cci.ListSourceTableName, columns); } legalValuesField.SourceTableName = cci.ListSourceTableName; legalValuesField.TextColumnName = cci.ListSourceTextColumnName; legalValuesField.CodeColumnName = cci.ListSourceTextColumnName; } break; default: throw new ApplicationException("Invalid field type"); //break; } double ControlHeightPercentage = 0.0; double ControlWidthPercentage = 0.0; if (field is FieldWithSeparatePrompt) { FieldWithSeparatePrompt fieldWithPrompt; fieldWithPrompt = (FieldWithSeparatePrompt)field; fieldWithPrompt.PromptText = cci.Prompt; fieldWithPrompt.PromptFont = cci.PromptFont; fieldWithPrompt.ControlFont = cci.ControlFont; fieldWithPrompt.PromptLeftPositionPercentage = cci.ControlLeftPosition / 100; fieldWithPrompt.PromptTopPositionPercentage = cci.ControlTopPosition / 100; fieldWithPrompt.Name = cci.DestinationColumnName; fieldWithPrompt.ControlHeightPercentage = ControlHeightPercentage / 100; fieldWithPrompt.ControlWidthPercentage = ControlWidthPercentage / 100; fieldWithPrompt.ControlTopPositionPercentage = cci.ControlTopPosition / 100; fieldWithPrompt.ControlLeftPositionPercentage = (cci.ControlLeftPosition / 100) + 0.090702947845805; fieldWithPrompt.UpdatePromptPosition(); fieldWithPrompt.UpdateControlPosition(); } else { FieldWithoutSeparatePrompt fieldWithoutPrompt; fieldWithoutPrompt = (FieldWithoutSeparatePrompt)field; fieldWithoutPrompt.PromptText = cci.Prompt; fieldWithoutPrompt.PromptFont = cci.PromptFont; fieldWithoutPrompt.Name = cci.DestinationColumnName; fieldWithoutPrompt.ControlHeightPercentage = ControlHeightPercentage / 100; fieldWithoutPrompt.ControlWidthPercentage = ControlWidthPercentage / 100; fieldWithoutPrompt.ControlTopPositionPercentage = cci.ControlTopPosition / 100; fieldWithoutPrompt.ControlLeftPositionPercentage = (cci.ControlLeftPosition / 100) + 0.090702947845805; fieldWithoutPrompt.UpdateControlPosition(); } }
/// <summary> /// Gets all the fields in a view /// </summary> /// <param name="view">the view object</param> /// <returns>A collection of fields</returns> public virtual FieldCollectionMaster GetFields(View view) { try { FieldCollectionMaster fields = new FieldCollectionMaster(); //DataTable table = GetFieldsAsDataTable(view); //foreach (DataRow row in table.Rows) //{ // MetaFieldType fieldTypeId = (MetaFieldType)row[ColumnNames.FIELD_TYPE_ID]; // Field field = null; XmlNode fieldsNode = view.ViewElement.SelectSingleNode("Fields"); foreach (XmlNode fieldNode in fieldsNode.ChildNodes) { //MetaFieldType fieldTypeId = (MetaFieldType)(int.Parse(fieldNode.Attributes["FieldTypeId"].Value.ToString())); MetaFieldType fieldTypeId = (MetaFieldType)Enum.Parse(typeof(MetaFieldType), fieldNode.Attributes["FieldTypeId"].Value.ToString()); Field field = null; switch (fieldTypeId) { case MetaFieldType.Text: field = new SingleLineTextField(view, fieldNode); break; case MetaFieldType.LabelTitle: field = new LabelField(view, fieldNode); break; case MetaFieldType.TextUppercase: field = new UpperCaseTextField(view, fieldNode); break; case MetaFieldType.Multiline: field = new MultilineTextField(view, fieldNode); break; case MetaFieldType.Number: field = new NumberField(view, fieldNode); break; case MetaFieldType.PhoneNumber: field = new PhoneNumberField(view, fieldNode); break; case MetaFieldType.Date: field = new DateField(view, fieldNode); break; case MetaFieldType.Time: field = new TimeField(view, fieldNode); break; case MetaFieldType.DateTime: field = new DateTimeField(view, fieldNode); break; case MetaFieldType.Checkbox: field = new CheckBoxField(view, fieldNode); break; case MetaFieldType.YesNo: field = new YesNoField(view, fieldNode); break; case MetaFieldType.Option: field = new OptionField(view, fieldNode); break; case MetaFieldType.CommandButton: field = new CommandButtonField(view, fieldNode); break; case MetaFieldType.Image: field = new ImageField(view, fieldNode); break; case MetaFieldType.Mirror: field = new MirrorField(view, fieldNode); break; case MetaFieldType.Grid: field = new GridField(view, fieldNode); break; case MetaFieldType.LegalValues: field = new DDLFieldOfLegalValues(view, fieldNode); break; case MetaFieldType.Codes: field = new DDLFieldOfCodes(view, fieldNode); break; case MetaFieldType.List: field = new DDListField(view, fieldNode); break; case MetaFieldType.CommentLegal: field = new DDLFieldOfCommentLegal(view, fieldNode); break; case MetaFieldType.Relate: field = new RelatedViewField(view, fieldNode); break; case MetaFieldType.RecStatus: field = new RecStatusField(view); break; case MetaFieldType.UniqueKey: field = new UniqueKeyField(view); break; case MetaFieldType.ForeignKey: field = new ForeignKeyField(view); break; default: throw new GeneralException("Invalid Field Type"); } //field.LoadFromRow(row); fields.Add(field); } return (fields); } finally { } }
/// <summary> /// Retrieves data for yes no field from xml metadata /// </summary> /// <param name="field">A yes no field</param> /// <param name="fieldNode">The field node in the Xml metadata file</param> public void GetFieldData(YesNoField field, XmlNode fieldNode) { field.Id = Int32.Parse(fieldNode.Attributes["FieldId"].Value); field.Name = fieldNode.Attributes["Name"].Value; field.PromptText = fieldNode.Attributes["PromptText"].Value; //field.ControlFont = System.Drawing.Font(fieldNode.Attributes["ControlFontFamily"].Value); //field.ControlFont.Style = fieldNode.Attributes["ControlFontStyle"].Value; //field.ControlFont.Size = float.Parse(fieldNode.Attributes["ControlFontSize"].Value); field.ControlTopPositionPercentage = Double.Parse(fieldNode.Attributes["ControlTopPositionPercentage"].Value); field.ControlLeftPositionPercentage = Double.Parse(fieldNode.Attributes["ControlLeftPositionPercentage"].Value); field.ControlHeightPercentage = Double.Parse(fieldNode.Attributes["ControlHeightPercentage"].Value); field.ControlWidthPercentage = Double.Parse(fieldNode.Attributes["ControlWidthPercentage"].Value); field.TabIndex = Int32.Parse(fieldNode.Attributes["TabIndex"].Value); field.HasTabStop = bool.Parse(fieldNode.Attributes["HasTabStop"].Value); //field.PromptFont.FontFamily.Name = fieldNode.Attributes["PromptFontFamily"].Value; //field.PromptFont.Style = fieldNode.Attributes["PromptFontStyle"].Value; //field.PromptFont.Size = fieldNode.Attributes["PromptFontSize"].Value; //field.PromptFont.Name = fieldNode.Attributes["PromptScriptName"].Value; field.PromptTopPositionPercentage = Double.Parse(fieldNode.Attributes["PromptTopPositionPercentage"].Value); field.PromptLeftPositionPercentage = Double.Parse(fieldNode.Attributes["PromptLeftPositionPercentage"].Value); //field.ControlFont.Name = fieldNode.Attributes["ControlScriptName"].Value; field.ShouldRepeatLast = bool.Parse(fieldNode.Attributes["ShouldRepeatLast"].Value); field.IsRequired = bool.Parse(fieldNode.Attributes["IsRequired"].Value); field.IsReadOnly = bool.Parse(fieldNode.Attributes["IsReadOnly"].Value); //field.IsControlResizable = bool.Parse(fieldNode.Attributes["ShouldRetainImageSize"].Value); field.TableName = fieldNode.Attributes["DataTableName"].Value; //field. = fieldNode.Attributes["FieldTypeId"].Value; field.Page = new Page(field.GetView()); //field.Page.Name = field.Page.Id = int.Parse(fieldNode.Attributes["PageId"].Value); }
/// <summary> /// Create Yes/No field. /// </summary> /// <param name="field">Yes/No field to create.</param> /// <returns>Id of the newly created field.</returns> public int CreateField(YesNoField field) { try { #region InputValidation if (field == null) { throw new ArgumentNullException("YesNoField"); } #endregion XmlDocument xmlDoc = GetXmlDocument(); XmlNode fieldsNode = GetFieldsNode(field.ViewElement); View view = field.GetView(); XmlElement fieldElement = xmlDoc.CreateElement("Field"); XmlAttribute fieldIdAttribute = xmlDoc.CreateAttribute("FieldId"); fieldIdAttribute.Value = view.GetFieldId(field.ViewElement).ToString(); fieldElement.Attributes.Append(fieldIdAttribute); field.Id = Int32.Parse(fieldIdAttribute.Value); XmlAttribute fieldNameAttribute = xmlDoc.CreateAttribute("Name"); fieldNameAttribute.Value = field.Name; fieldElement.Attributes.Append(fieldNameAttribute); XmlAttribute fieldPromptText = xmlDoc.CreateAttribute("PromptText"); fieldPromptText.Value = field.PromptText; fieldElement.Attributes.Append(fieldPromptText); XmlAttribute fieldControlFontFamily = xmlDoc.CreateAttribute("ControlFontFamily"); fieldControlFontFamily.Value = field.ControlFont.FontFamily.Name; fieldElement.Attributes.Append(fieldControlFontFamily); XmlAttribute controlFontStyle = xmlDoc.CreateAttribute("ControlFontStyle"); controlFontStyle.Value = field.ControlFont.Style.ToString(); fieldElement.Attributes.Append(controlFontStyle); XmlAttribute controlFontSize = xmlDoc.CreateAttribute("ControlFontSize"); controlFontSize.Value = field.ControlFont.Size.ToString(); fieldElement.Attributes.Append(controlFontSize); XmlAttribute controlTopPositionPercentage = xmlDoc.CreateAttribute("ControlTopPositionPercentage"); controlTopPositionPercentage.Value = field.ControlTopPositionPercentage.ToString(); fieldElement.Attributes.Append(controlTopPositionPercentage); XmlAttribute controlLeftPositionPercentage = xmlDoc.CreateAttribute("ControlLeftPositionPercentage"); controlLeftPositionPercentage.Value = field.ControlLeftPositionPercentage.ToString(); fieldElement.Attributes.Append(controlLeftPositionPercentage); XmlAttribute controlHeightPercentage = xmlDoc.CreateAttribute("ControlHeightPercentage"); controlHeightPercentage.Value = field.ControlHeightPercentage.ToString(); fieldElement.Attributes.Append(controlHeightPercentage); XmlAttribute controlWidthPercentage = xmlDoc.CreateAttribute("ControlWidthPercentage"); controlWidthPercentage.Value = field.ControlWidthPercentage.ToString(); fieldElement.Attributes.Append(controlWidthPercentage); XmlAttribute tabIndex = xmlDoc.CreateAttribute("TabIndex"); tabIndex.Value = field.TabIndex.ToString(); fieldElement.Attributes.Append(tabIndex); XmlAttribute hasTabStop = xmlDoc.CreateAttribute("HasTabStop"); hasTabStop.Value = (bool.Parse(field.HasTabStop.ToString())).ToString(); fieldElement.Attributes.Append(hasTabStop); XmlAttribute promptFontFamily = xmlDoc.CreateAttribute("PromptFontFamily"); promptFontFamily.Value = field.PromptFont.FontFamily.Name; fieldElement.Attributes.Append(promptFontFamily); XmlAttribute promptFontStyle = xmlDoc.CreateAttribute("PromptFontStyle"); promptFontStyle.Value = field.PromptFont.Style.ToString(); fieldElement.Attributes.Append(promptFontStyle); XmlAttribute promptFontSize = xmlDoc.CreateAttribute("PromptFontSize"); promptFontSize.Value = field.PromptFont.Size.ToString(); fieldElement.Attributes.Append(promptFontSize); XmlAttribute promptScriptName = xmlDoc.CreateAttribute("PromptScriptName"); promptScriptName.Value = field.PromptFont.Name; fieldElement.Attributes.Append(promptScriptName); XmlAttribute promptTopPositionPercentage = xmlDoc.CreateAttribute("PromptTopPositionPercentage"); promptTopPositionPercentage.Value = field.PromptTopPositionPercentage.ToString(); fieldElement.Attributes.Append(promptTopPositionPercentage); XmlAttribute promptLeftPositionPercentage = xmlDoc.CreateAttribute("PromptLeftPositionPercentage"); promptLeftPositionPercentage.Value = field.PromptLeftPositionPercentage.ToString(); fieldElement.Attributes.Append(promptLeftPositionPercentage); XmlAttribute controlScriptName = xmlDoc.CreateAttribute("ControlScriptName"); controlScriptName.Value = field.ControlFont.Name; fieldElement.Attributes.Append(controlScriptName); XmlAttribute shouldRepeatLast = xmlDoc.CreateAttribute("ShouldRepeatLast"); shouldRepeatLast.Value = bool.Parse(field.ShouldRepeatLast.ToString()).ToString(); fieldElement.Attributes.Append(shouldRepeatLast); XmlAttribute isRequired = xmlDoc.CreateAttribute("IsRequired"); isRequired.Value = (bool.Parse(field.IsRequired.ToString()).ToString()); fieldElement.Attributes.Append(isRequired); XmlAttribute isReadOnly = xmlDoc.CreateAttribute("IsReadOnly"); isReadOnly.Value = (bool.Parse(field.IsReadOnly.ToString())).ToString(); fieldElement.Attributes.Append(isReadOnly); XmlAttribute shouldRetainImageSize = xmlDoc.CreateAttribute("ShouldRetainImageSize"); //shouldRetainImageSize.Value = (bool.Parse(field.IsControlResizable.ToString())).ToString(); fieldElement.Attributes.Append(shouldRetainImageSize); XmlAttribute dataTableName = xmlDoc.CreateAttribute("DataTableName"); dataTableName.Value = field.TableName; fieldElement.Attributes.Append(dataTableName); XmlAttribute fieldTypeId = xmlDoc.CreateAttribute("FieldTypeId"); fieldTypeId.Value = field.FieldType.ToString(); fieldElement.Attributes.Append(fieldTypeId); XmlAttribute pageId = xmlDoc.CreateAttribute("PageId"); pageId.Value = field.Page.Id.ToString(); fieldElement.Attributes.Append(pageId); fieldsNode.AppendChild(fieldElement); view.Project.Save(); return field.Id; } finally { } }
/// <summary> /// Update Yes/No field. /// </summary> /// <param name="field">Yes/No field to update.</param> /// <returns>Id of the updated field.</returns> public void UpdateField(YesNoField field) { try { #region InputValidation if (field == null) { throw new ArgumentNullException("YesNoField"); } #endregion XmlDocument xmlDoc = GetXmlDocument(); XmlNode fieldsNode = GetFieldsNode(GetFieldViewElement(field)); View view = field.GetView(); string fieldId = field.Id.ToString(); XmlNode fieldNode = fieldsNode.SelectSingleNode("//Field[@FieldId= '" + fieldId + "']"); fieldNode.Attributes["Name"].Value = field.Name.ToString(); fieldNode.Attributes["PromptText"].Value = field.PromptText.ToString(); fieldNode.Attributes["ControlFontFamily"].Value = field.ControlFont.ToString(); fieldNode.Attributes["ControlFontStyle"].Value = field.ControlFont.Style.ToString(); fieldNode.Attributes["ControlFontSize"].Value = field.ControlFont.Size.ToString(); fieldNode.Attributes["ControlTopPositionPercentage"].Value = field.ControlTopPositionPercentage.ToString(); fieldNode.Attributes["ControlLeftPositionPercentage"].Value = field.ControlLeftPositionPercentage.ToString(); fieldNode.Attributes["ControlHeightPercentage"].Value = field.ControlHeightPercentage.ToString(); fieldNode.Attributes["ControlWidthPercentage"].Value = field.ControlWidthPercentage.ToString(); fieldNode.Attributes["TabIndex"].Value = field.TabIndex.ToString(); fieldNode.Attributes["HasTabStop"].Value = (bool.Parse(field.HasTabStop.ToString())).ToString(); fieldNode.Attributes["PromptFontFamily"].Value = field.PromptFont.FontFamily.Name.ToString(); fieldNode.Attributes["PromptFontStyle"].Value = field.PromptFont.Style.ToString(); fieldNode.Attributes["PromptFontSize"].Value = field.PromptFont.Size.ToString(); fieldNode.Attributes["PromptScriptName"].Value = field.PromptFont.Name.ToString(); fieldNode.Attributes["PromptTopPositionPercentage"].Value = field.PromptTopPositionPercentage.ToString(); fieldNode.Attributes["PromptLeftPositionPercentage"].Value = field.PromptLeftPositionPercentage.ToString(); fieldNode.Attributes["ControlScriptName"].Value = field.ControlFont.Name.ToString(); fieldNode.Attributes["ShouldRepeatLast"].Value = bool.Parse(field.ShouldRepeatLast.ToString()).ToString(); fieldNode.Attributes["IsRequired"].Value = (bool.Parse(field.IsRequired.ToString()).ToString()); fieldNode.Attributes["IsReadOnly"].Value = (bool.Parse(field.IsReadOnly.ToString())).ToString(); fieldNode.Attributes["DataTableName"].Value = field.TableName.ToString(); view.Project.Save(); } catch (Exception ex) { throw new GeneralException("Could not update YesNoField in the database", ex); } }
/// <summary> /// Field data is saved /// </summary> public void SetFieldData() { ControlFactory factory = ControlFactory.Instance; if (canvas != null && canvas.Panels != null) { foreach (Panel panel in canvas.Panels) { foreach (Control control in panel.Controls) { try { // Skip prompts and field group boxes. They don't have any data. if (control is Label) { continue; } if (control is FieldGroupBox) { continue; } Field field = factory.GetAssociatedField(control); if (field == null) { continue; } field = this.view.Fields[field.Name]; // Images fields populate the file name when the file is selected. No need to read from control any more. if (field is ImageField) { continue; } if (field is YesNoField) { YesNoField yesNoField = field as YesNoField; ComboBox comboBox = control as ComboBox; if (comboBox.SelectedIndex >= 0) { if (comboBox.SelectedValue != null) { yesNoField.CurrentRecordValueObject = comboBox.SelectedValue; } else if (comboBox.SelectedIndex == 0) { yesNoField.CurrentRecordValueObject = 1; // 1 = yes index 0 = yes } else { yesNoField.CurrentRecordValueObject = 0; // 0 = no index 1 = no } } else { yesNoField.CurrentRecordValueObject = null; } } else if (field is GridField) { DataGridView dgv = (DataGridView)control; if (dgv.DataSource is DataTable) { ((GridField)field).DataSource = (DataTable)dgv.DataSource; } } else if (field is OptionField) { OptionField optionField = field as OptionField; GroupBox groupBox = control as GroupBox; foreach (Control rb in groupBox.Controls) { if (((RadioButton)rb).Checked) { int index = 0; foreach (string option in optionField.Options) { if (option == rb.Text) { optionField.CurrentRecordValueObject = index; } index++; } } } } else if (control is TextBox || control is RichTextBox || control is ComboBox || control is CheckBox || control is MaskedTextBox || control is DateTimePicker) { if (field is IDataField) { if (field is DateTimeField) { SetDateTimeData(field as DateTimeField, control); } else if (control is TextBox || control is RichTextBox) { SetTextData(field, control); } else if (control is MaskedTextBox) { if (field is NumberField || field is PhoneNumberField) { SetNumberData(field, control); } else { SetOtherMaskedData(field, control); } } else if (control is ComboBox) { SetComboBoxData(field, control); } else if (control is CheckBox) { SetCheckBoxData(field, control); } else if (control is GroupBox) { } else if (control is DateTimePicker) { } } } } catch { // do nothing for now } } // end foreach (Control control in panel.Controls) } // end foreach (Panel panel in canvas.Panels) } }