/// <summary> /// Delete a page from a view /// </summary> public void DeletePage(Page page) { page.DeleteFields(); GetMetadata().DeletePage(page); //GetMetadata().SynchronizePageNumbersOnDelete(this, page.Position + 1); //incremented position by 1 since the index is 0 GetMetadata().SynchronizePageNumbersOnDelete(this, page.Position); page = null; //explicit dispose pages = null; fields = GetMetadata().GetFields(this); }
/// <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); }
public void ReadDataSource(DataTable table) { if (table != null) { IMemoryRegion region = MemoryRegion; FieldCollectionMaster dataFields = new FieldCollectionMaster(); Project tempProject = new Project(); View tempView = new View(tempProject); Page tempPage = new Page(tempView); DataInfo.PrimaryTable = table; List<IField> listOfFields = new List<IField>(); foreach (DataColumn column in table.Columns) { IField field = (IField)tempPage.CreateField(MetaFieldType.Text); field.Name = column.ColumnName; RenderableField tempField = (RenderableField)field; tempField.PromptText = column.ColumnName; tempField.SourceTable = table.TableName; listOfFields.Add(tempField); } foreach (IField field in listOfFields) { region.DefineVariable((IDataField)field); } if (CurrentRead != null && CurrentRead.IsEpi7ProjectRead && CurrentProject != null && CurrentProject.Views.Exists(CurrentRead.Identifier)) { View view = CurrentProject.Views[CurrentRead.Identifier]; foreach (IField field in view.Fields) { if (field is GroupField) { IVariable v = new DataSourceVariable(field.Name, DataType.Unknown); region.DefineVariable(v); } } } foreach (KeyValuePair<string, List<string>> kvp in GroupVariableList) { IVariable v = new DataSourceVariable(kvp.Key, DataType.Unknown); region.DefineVariable(v); } } }
/// <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 { } }