Пример #1
0
        public static FieldBehavior CreateDefaultBehavior(EntityFieldDef field)
        {
            FieldBehavior behavior = new FieldBehavior();

            behavior.FieldName = field.Name;
            behavior.Width     = _defaultWidth;
            behavior.Readonly  = false;
            switch (field.DataType)
            {
            case DataTypes.Boolean:
            {
                behavior.ControlType = ControlTypes.List;
                List <string> values = new List <string>();
                values.Add("Yes," + true.ToString());
                values.Add("No," + false.ToString());
                behavior.ExtraItem = string.Join("|", values.ToArray());
            } break;

            default:
            {
                behavior.ControlType = ControlTypes.Text;
            }
            break;
            }
            return(behavior);
        }
Пример #2
0
        public EntityFieldDef AddEntityFieldDef(Guid entityDefId, string fieldName, string caption, DataTypes dataType, int length)
        {
            if (RequestContext.Current.TenantId == Guid.Empty)
            {
                throw new ArgumentNullException("tenantId");
            }
            if (entityDefId == Guid.Empty)
            {
                throw new ArgumentNullException("entityDefId");
            }
            if (string.IsNullOrEmpty(fieldName))
            {
                throw new ArgumentNullException("fieldName");
            }
            EntityFieldDef result = null;

            try
            {
                DataModelContext.Initialize(RequestContext.Current.TenantId);
                result = MetadataLogic.AddEntityFieldDef(entityDefId, fieldName, caption, dataType, length);
            }
            finally
            {
                DataModelContext.Clear();
            }
            return(result);
        }
Пример #3
0
    protected void btnAdd_Click(object sender, EventArgs e)
    {
        //TODO: Check Unique
        EntityFieldDef newField = MetadataProxy.AddEntityFieldDef(
            new Guid(drpDataEntities.SelectedItem.Value),
            txtName.Text.Trim(),
            txtCaption.Text.Trim(),
            (DataTypes)int.Parse(drpDataType.SelectedItem.Value),
            string.IsNullOrEmpty(txtLength.Text.Trim()) ? 0 : int.Parse(txtLength.Text.Trim()));

        drpDataEntities_SelectedIndexChanged(null, null);
    }
Пример #4
0
        static private EntityFieldDef FieldMetadataToFieldDef(FieldMetadata metadata)
        {
            if (metadata == null)
            {
                return(null);
            }
            EntityFieldDef fieldDef = new EntityFieldDef();

            fieldDef.Id       = metadata.Id;
            fieldDef.Name     = metadata.Name;
            fieldDef.Caption  = metadata.Caption;
            fieldDef.DataType = metadata.DataType;
            fieldDef.Length   = metadata.Length;
            fieldDef.Nullable = metadata.Nullable;
            fieldDef.IsShared = metadata.TenantId == null;
            return(fieldDef);
        }
Пример #5
0
        public static BaseValidator[] GetValidators(EntityFieldDef field, string validationGroup)
        {
            List <BaseValidator> validators = new List <BaseValidator>();

            switch (field.DataType)
            {
            case DataTypes.DateTime:
            {
                CompareValidator validator = new System.Web.UI.WebControls.CompareValidator();
                validator.Operator        = ValidationCompareOperator.DataTypeCheck;
                validator.Display         = ValidatorDisplay.Dynamic;
                validator.Type            = ValidationDataType.Date;
                validator.ErrorMessage    = Resources.GlobalResources.InvalidFormat;
                validator.ValidationGroup = validationGroup;
                validators.Add(validator);
            }
            break;

            case DataTypes.Int:
            {
                CompareValidator validator = new System.Web.UI.WebControls.CompareValidator();
                validator.Operator        = ValidationCompareOperator.DataTypeCheck;
                validator.Display         = ValidatorDisplay.Dynamic;
                validator.Type            = ValidationDataType.Integer;
                validator.ErrorMessage    = Resources.GlobalResources.InvalidFormat;
                validator.ValidationGroup = validationGroup;
                validators.Add(validator);
            } break;

            case DataTypes.Decimal:
            {
                CompareValidator validator = new System.Web.UI.WebControls.CompareValidator();
                validator.Operator        = ValidationCompareOperator.DataTypeCheck;
                validator.Display         = ValidatorDisplay.Dynamic;
                validator.Type            = ValidationDataType.Double;
                validator.ErrorMessage    = Resources.GlobalResources.InvalidFormat;
                validator.ValidationGroup = validationGroup;
                validators.Add(validator);
            } break;
            }
            return(validators.ToArray());
        }
Пример #6
0
        public EntityFieldDef GetFieldDefById(Guid fieldId)
        {
            if (RequestContext.Current.TenantId == Guid.Empty)
            {
                throw new ArgumentNullException("tenantId");
            }
            if (fieldId == Guid.Empty)
            {
                throw new ArgumentNullException("fieldId");
            }
            EntityFieldDef result = null;

            try
            {
                DataModelContext.Initialize(RequestContext.Current.TenantId);
                result = MetadataLogic.GetFieldDefById(fieldId);
            }
            finally
            {
                DataModelContext.Clear();
            }
            return(result);
        }
Пример #7
0
    protected void gridSharedFields_RowEditing(object sender, GridViewEditEventArgs e)
    {
        Guid           entityDefId = new Guid(drpDataEntities.SelectedItem.Value);
        EntityFieldDef field       = MetadataProxy.GetFieldDefById((Guid)gridSharedFields.DataKeys[e.NewEditIndex].Value);

        txtFieldId.Value    = field.Id.ToString();
        txtName.Text        = field.Name;
        txtCaption.Text     = field.Caption;
        txtLength.Text      = field.Length.ToString();
        chkNullable.Checked = field.Nullable;
        this.LoadNodeTypeDropList((int)field.DataType);

        panelGrids.Visible = false;
        panelEdit.Visible  = true;
        btnAdd.Visible     = false;
        btnEdit.Visible    = true;

        txtName.Enabled        = false;
        drpDataType.Enabled    = false;
        txtLength.Enabled      = false;
        chkNullable.Enabled    = false;
        chkIsExtension.Checked = false;
    }
Пример #8
0
        public static void RenderControls(Control container, EntityFieldDef[] fields, FieldBehavior[] behaviors, string validationGroup)
        {
            if (fields == null || fields.Length == 0)
            {
                return;
            }
            if (behaviors == null || behaviors.Length == 0)
            {
                behaviors = new FieldBehavior[fields.Length];
                for (int i = 0; i < fields.Length; i++)
                {
                    behaviors[i] = CreateDefaultBehavior(fields[i]);
                }
                RenderControls(container, fields, behaviors, validationGroup);
                return;
            }
            HtmlTable tbl = new HtmlTable();

            container.Controls.Add(tbl);
            foreach (FieldBehavior behavior in behaviors)
            {
                EntityFieldDef field = null;
                foreach (EntityFieldDef tempField in fields)
                {
                    if (string.Compare(tempField.Name, behavior.FieldName, true) == 0)
                    {
                        field = tempField;
                        break;
                    }
                }
                if (field == null)
                {
                    continue;
                }
                HtmlTableRow row = new HtmlTableRow();
                tbl.Rows.Add(row);
                HtmlTableCell cell = new HtmlTableCell();

                //label
                cell.Width = string.Format("{0}px", _labelWidth);
                cell.Align = "right";
                row.Controls.Add(cell);
                Label lblControl = new Label();
                lblControl.Text = field.Caption;
                cell.Controls.Add(lblControl);

                //seperator:
                cell           = new HtmlTableCell();
                cell.InnerText = ":";
                row.Controls.Add(cell);

                //control
                cell = new HtmlTableCell();
                row.Controls.Add(cell);
                WebControl control = DataModelControlHelper.CreateControl(field, behavior);
                cell.Controls.Add(control);

                //add validators
                cell = new HtmlTableCell();
                row.Controls.Add(cell);
                BaseValidator[] validators = DataModelControlHelper.GetValidators(field, validationGroup);
                foreach (BaseValidator validator in validators)
                {
                    validator.ControlToValidate = control.ID.ToString();
                    cell.Controls.Add(validator);
                }
            }
        }
Пример #9
0
        public static WebControl CreateControl(EntityFieldDef field, FieldBehavior behavior)
        {
            WebControl control = null;

            switch (behavior.ControlType)
            {
            case ControlTypes.List:
            {
                control = new DropDownList();
                if (!string.IsNullOrEmpty(behavior.ExtraItem))
                {
                    if (field.Nullable)
                    {
                        (control as DropDownList).Items.Add(new ListItem(string.Empty, string.Empty));
                    }
                    string[] items = behavior.ExtraItem.Split('|');
                    foreach (string item in items)
                    {
                        string[] textValue = item.Split(',');
                        if (textValue.Length == 1)
                        {
                            (control as DropDownList).Items.Add(new ListItem(item, item));
                        }
                        else
                        {
                            (control as DropDownList).Items.Add(new ListItem(textValue[0], textValue[1]));
                        }
                    }
                }
                else if (field.DataType == DataTypes.Boolean)
                {
                    if (field.Nullable)
                    {
                        (control as DropDownList).Items.Add(new ListItem(string.Empty, string.Empty));
                    }
                    (control as DropDownList).Items.Add(new ListItem("Yes", true.ToString()));
                    (control as DropDownList).Items.Add(new ListItem("No", false.ToString()));
                }
            } break;

            case ControlTypes.Label:
            {
                control = new Label();
            } break;

            case ControlTypes.Text:
            case ControlTypes.MultiText:
            default:
            {
                TextBox textBox = new TextBox();
                control = textBox;
                if (behavior.ControlType == ControlTypes.MultiText)
                {
                    textBox.TextMode = TextBoxMode.MultiLine;
                    textBox.Height   = new Unit(60);
                }
                if (field.DataType == DataTypes.String)
                {
                    int maxLength = field.Length;
                    if (maxLength <= 0 || maxLength > 256)
                    {
                        textBox.MaxLength = 256;
                    }
                    else
                    {
                        textBox.MaxLength = maxLength;
                    }
                }
                else if (field.DataType == DataTypes.Int)
                {
                    textBox.MaxLength = 10;
                }
                else if (field.DataType == DataTypes.Decimal)
                {
                    textBox.MaxLength = 18;
                }
            } break;
            }
            control.ID      = _prefix + field.Name;
            control.Width   = new Unit(behavior.Width == 0 ? _defaultWidth : behavior.Width);
            control.Enabled = !behavior.Readonly;
            return(control);
        }