private void InjectCustomField(ICustomFieldContainer container, Control customField) { Panel rowDiv = new Panel(); rowDiv.CssClass = "row"; Panel colDiv = new Panel(); colDiv.CssClass = "col-xs-12"; // Put each custom field on its own row for now. Working out the no of columns already used in a container is fiddly.. colDiv.Controls.Add(customField); rowDiv.Controls.Add(colDiv); container.CustomFieldInsertPoint.Controls.Add(rowDiv); }
protected virtual void CreateCustomFields() { if (CustomFields != null) { foreach (ScreenCustomField field in CustomFields) { Control root = this; // this.Parent.ID == "ControlContainer" ? this.Parent.Parent : this; ICustomFieldContainer container = GetControlTree <ICustomFieldContainer>(root).Where(control => control is Control && ((Control)control).ClientID == field.ParentControl).FirstOrDefault(); if (container == null) { container = GetControlTree <CustomFieldContainer>(root).FirstOrDefault(); } BaseInputControl customField = null; if (container != null) { switch (field.CftypeId) { case "Text": customField = CreateCustomTextField(field); break; case "MultiLine": customField = CreateCustomMultilineField(field); break; case "Checkbox": customField = CreateCustomCheckboxField(field); break; case "Date": customField = CreateCustomDateField(field); break; case "List": customField = CreateCustomListField(field); break; case "Number": customField = CreateCustomNumberField(field); break; case "PopupSearch": customField = CreateCustomPopupField(field); break; } if (customField != null && customField is ICanBeACustomField) { customField.LabelText = field.Label; customField.ID = field.Name; customField.DataBoundValue = "_customFields." + field.Name; ((ICanBeACustomField)customField).CustomFieldId = field.Id; ((ICanBeACustomField)customField).IsCustomField = true; InjectCustomField(container, customField); } } } } }