Example #1
0
        protected virtual MvcDynamicForms.Fields.Field GetDropDown(FieldAttributes fieldAttributes, double formWidth, double formHeight, string controlValue, string DropDownValues, int FieldTypeId, string RelateCondition = "")
        {
            var select = new Select(fieldAttributes, formWidth, formHeight)//, DropDownValues, FieldTypeId)
            {
                Value = controlValue
            };

            select.SelectType    = FieldTypeId;
            select.SelectedValue = controlValue;

            select.ShowEmptyOption = true;
            select.EmptyOption     = "Select";
            select.AddChoices(DropDownValues, "&#;");
            select.SelectedValue = controlValue;
            if (!string.IsNullOrWhiteSpace(controlValue))
            {
                select.Choices[controlValue] = true;
            }


            /* List<string> CodesItemList1 = new List<string>();
             * select.CodesList = new Dictionary<string, List<string>>();
             * if (!string.IsNullOrEmpty(RelateCondition))
             * {
             *   List<string> CodesItemList = RelateCondition.Split(',').ToList();
             *
             *   foreach (var item in CodesItemList)
             *   {
             *      // CodesItemList1.Add(item.Remove(item.IndexOf(':')));
             *
             *   }
             * }
             *
             * if (CodesItemList1.Count() > 0)
             * {
             *   List<string> List = new List<string>();
             *   foreach (var item in CodesItemList1)
             *   {
             *       List.Add(item.ToString());
             *   }
             *   if (!select.CodesList.ContainsKey(DropDownValues.ToString()))
             *   {
             *       select.CodesList.Add(DropDownValues.Trim(), List);
             *   }
             * }*///TOBEDONE


            return(select);
        }
Example #2
0
        public static Form GetForm()
        {
            /*
             * This method sets up the Form and Field objects that
             * are needed to dynamically generate html forms at runtime.
             *
             * Of course, there are other ways of going about defining your forms and their fields.
             * I used a static class in this demo application for simplicity.
             * In the real world, you could store your field definitions anywhere.
             *
             * For example, you could create a database table to store all
             * of the data needed to create the form fields below.
             * Some of your end users could have access to some kind of interface to create, update,
             * or delete the form field definitions in the database.
             * This described scenario was actually the inspiration for this project.
             *
             * There are 7 different Field types that can be used to construct the form:
             *  - TextBox (single line text input)
             *  - Textarea (multi line text input)
             *  - Checkbox
             *  - CheckboxList
             *  - RadioList
             *  - Select (Drop down lists and List boxes)
             *  - Literal (Any custom html at all. For display purposes only (no user input))
             *
             * Each Field type have a few things in common:
             *  - Title property: Used when storing end user's responses.
             *  - Prompt property: Question asked to the user for each field.
             *  - DisplayOrder property: The order that the field is displayed to the user.
             *  - Required property: Is the user required to complete the field?
             *  - InputHtmlAttributes: Allows the developer to set the input elements html attributes
             *
             * There are other properties and behaviors that some Field types do not share with each other.
             * Take a look through the members of each Type to see what you can do.
             * Much of each type's unique functionality is demonstrated below.
             * Feel free to tinker around in this file, changing and adding fields.
             * Don't forget to add newly created fields to the Form.
             *
             * The Form object is the object that contains all of your Field objects,
             * triggers validation and rendering, and lets the developer access user responses.
             * When constructing your form, you can use Form.AddFields() to get your Fields
             * into the form (imagine that!).
             *
             * Check out
             *    /Controllers/HomeController.cs
             *    /Views/Home/Demo.cshtml
             *    /Views/Home/Responses.cshtml
             * to learn how to use the Form object in your web application.
             */

            // create fields
            var description = new Literal
            {
                Key          = "description",
                Template     = String.Format("<p>{0}</p>", PlaceHolders.Literal),
                DisplayOrder = 10,
                Html         =
                    "This is a dynamically generated form. All of the input fields on this form are generated at runtime."
            };

            var name = new TextBox
            {
                ResponseTitle   = "Name",
                Prompt          = "Enter your full name:",
                DisplayOrder    = 20,
                Required        = true,
                RequiredMessage = "Your full name is required",
            };

            var gender = new RadioList
            {
                DisplayOrder  = 30,
                ResponseTitle = "Gender",
                Prompt        = "Select your gender:",
                Required      = true,
                Orientation   = Orientation.Vertical
            };

            gender.AddChoices("Male,Female", ",");

            var email = new TextBox
            {
                DisplayOrder      = 25,
                ResponseTitle     = "Email Address",
                Prompt            = "Enter your email address:",
                Required          = true,
                RegexMessage      = "Must be a valid email address",
                RegularExpression =
                    @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"
            };

            var sports = new CheckBoxList
            {
                DisplayOrder  = 40,
                ResponseTitle = "Favorite Sports",
                Prompt        = "What are your favorite sports?",
                Orientation   = Orientation.Horizontal
            };

            sports.AddChoices("Baseball,Football,Soccer,Basketball,Tennis,Boxing,Golf", ",");

            var states = new Select
            {
                DisplayOrder      = 50,
                ResponseTitle     = "Visited States",
                MultipleSelection = true,
                Size   = 10,
                Prompt = "What US states have you visited? (Use the ctrl key to select multiple states.)"
            };

            states.AddChoices(
                "Alabama,Alaska,Arizona,Arkansas,California,Colorado,Connecticut,Delaware,Florida,Georgia,Hawaii,Idaho,Illinois,Indiana,Iowa,Kansas,Kentucky,Louisiana,Maine,Maryland,Massachusetts,Michigan,Minnesota,Mississippi,Missouri,Montana,Nebraska,Nevada,New Hampshire,New Jersey,New Mexico,New York,North Carolina,North Dakota,Ohio,Oklahoma,Oregon,Pennsylvania,Rhode Island,South Carolina,South Dakota,Tennessee,Texas,Utah,Vermont,Virginia,Washington,West Virginia,Wisconsin,Wyoming",
                ",");

            var bio = new TextArea
            {
                DisplayOrder  = 60,
                ResponseTitle = "Bio",
                Prompt        = "Describe yourself:"
            };

            bio.InputHtmlAttributes.Add("cols", "40");
            bio.InputHtmlAttributes.Add("rows", "6");

            var month = new Select
            {
                DisplayOrder    = 70,
                ResponseTitle   = "Month Born",
                Prompt          = "What month were you born in?",
                ShowEmptyOption = true,
                EmptyOption     = "- Select One - "
            };

            month.AddChoices("January,February,March,April,May,June,July,August,September,October,November,December",
                             ",");

            var agree = new CheckBox
            {
                DisplayOrder    = 80,
                ResponseTitle   = "Agrees To Terms",
                Prompt          = "I agree to all of the terms in the EULA.",
                Required        = true,
                RequiredMessage = "You must agree to the EULA!"
            };

            var eula = new Literal
            {
                DisplayOrder = 75,
                Html         =
                    string.Format(@"<textarea readonly=""readonly"" rows=""8"" cols=""60"">{0}</textarea>", GetEULA())
            };

            var file = new FileUpload
            {
                Prompt = "Your photo",
                InvalidExtensionError = "Image files only.",
                ValidExtensions       = ".jpg,.gif,.png",
                Required     = true,
                DisplayOrder = 73,
                UseMultiple  = true
            };

            file.Validated += new ValidatedEventHandler(file_Validated);
            file.Posted    += new FilePostedEventHandler(file_Posted);

            var hidden = new Hidden
            {
                ResponseTitle = "A Hidden Field",
                Value         = "some value"
            };

            // create form and add fields to it
            var form = new Form();

            form.AddFields(description, name, gender, email, sports, states, bio, month, agree, eula, file, hidden);

            return(form);
        }