Example #1
0
        /// <summary>
        /// Constructor for the class
        /// </summary>
        /// <param name="field">The field</param>
        /// <param name="currentFieldName">The name of the field</param>
        public DataSourceSelector(DDLFieldOfLegalValues field, string currentFieldName)
        {
            #region Input Validation
            if (string.IsNullOrEmpty(currentFieldName))
            {
                throw new ArgumentNullException("currentFieldName");
            }
            #endregion Input validation

            InitializeComponent();
            this.field               = field;
            this.fieldName           = currentFieldName;
            dgCodeTable.CaptionText += currentFieldName;

            try
            {
                if (!string.IsNullOrEmpty(field.SourceTableName))
                {
                    tableName  = field.SourceTableName;
                    columnName = field.TextColumnName;
                    dgCodeTable.PreferredColumnWidth = Convert.ToInt32(dgCodeTable.Width * .87);
                    dgCodeTable.DataSource           = field.GetSourceData();
                    btnCreate.Enabled   = false;
                    btnExisting.Enabled = false;
                }
            }
            catch
            {
                //TODO: move string to sharedstrings.resx
                throw new SystemException("Error loading data.");
            }
        }
Example #2
0
 /// <summary>
 /// Constructor for the Legal Values Field Definition dialog
 /// </summary>
 /// <param name="frm">The main form</param>
 /// <param name="field">The legal values field</param>
 public LegalValuesFieldDefinition(MainForm frm, DDLFieldOfLegalValues field) : base(frm)
 {
     InitializeComponent();
     this.mode  = FormMode.Edit;
     this.field = field;
     this.page  = field.Page;
     LoadFormData();
 }
        /// <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();
            }
        }