Добавление TextBocex, CheckBoxes по запросу C # - PullRequest
4 голосов
/ 03 мая 2011

Я скоро начну проект в моей компании, и клиент хотел бы иметь возможность на портале добавлять текстовые поля или флажки в качестве администратора ,, поэтому, например, изначально у меня может быть что-то вроде

Имя [textBox] Телефон [textBox]


Таким образом, клиент хотел бы войти в систему как администратор и иметь возможность добавить

Имя [textBox] Телефон [textBox] Получить брошюру[checkBox] // добавлено клиентом.

Забудьте о портале и административной части ... я хотел бы знать, что будет лучшим способом создать это (пользователь может добавлять элементы)

Любые идеи будут высоко оценены

С уважением

Ответы [ 2 ]

2 голосов
/ 03 мая 2011

Вы можете создать дополнительную aspx-форму, в которой пользователь (или администратор) может определять и создавать свои собственные формы, вы предоставляете имена переменных, и они решают добавить элементы управления, сохранить их в определенном виде.схема в базе данных, например,

UserForm: UserID FormID

Form: FormID FormName

FormElement: FormID VariableName Индекс ControlType

Конечно, это также может бытьсделано администратором и будет доступно всем.

Чтобы просмотреть конкретные формы, вы можете добавить еще одну aspx-страницу, содержащую следующий код:

protected void Page_Load(object sender, EventArgs e)
    {
        //you saved the FormName or ID to Session when you accessed it
        string formName = Session["FormName"].ToString();
        //this handles getting the elements for this Form from DB
        List<FormElement> elementList = FormElement.GetForForm(formName);
        this.renderForm(elementList);
    }

    private void renderForm(List<FormElement> eList)
    {
        foreach(FormElement fe in eList)
        {
            //Labels left, Controls right, of course this is just a design decision
            if(fe.Index%2==1)
            {
                Label lbl = new Label();
                lbl.Text = fe.Variable;
                lbl.ID = fe.ControlType + fe.Variable;
                divLeft.Controls.Add(lbl);
            }
            else
            {
                dynamic ctrl = null;
                switch (fe.ControlType)
                {
                    case "TextBox":
                        ctrl = new TextBox();
                        break;
                    case "CheckBox":
                        ctrl = new CheckBox();
                        break;
                    default:
                        break;
                }
                ctrl.ID = fe.ControlType + fe.Variable;
                divRight.Controls.Add(ctrl);
            }
        }
    }

Позже, после того как пользователь нажмет на "Отправить"вы сможете получать значения, введенные в эти элементы управления, используя divRight.FindControl (fe.ControlType + fe.Variable), поскольку он должен быть уникальным для каждой формы.

Этот подход предполагает, что вы используете .NET4.0 (из-за динамического), но, конечно, вы можете сделать это без проблем, просто будет больше кода.

Пожалуйста, дайте мне знать, если это такВы искали или если это было полезно.

Спасибо,

Деннис

2 голосов
/ 03 мая 2011

Из того, что я делал в прошлом, когда мне приходилось создавать динамический опрос, основанный на потребностях клиента.У меня была база данных, которая содержала следующие таблицы:

  1. Survey - хранит список опросов клиентов.
  2. Controls - перечисляет типы элементов управления, которые будут необходимы.Например, текстовое поле, флажок и т. Д.
  3. Элементы управления опросом - связывает все элементы управления, необходимые для опроса.
  4. Пользовательские значения - сохраняет значения, введенные в элемент управления на основе используемого опроса.

Затем я добавил логику для динамического создания элементов управления на основе опроса, выбранного путем чтения значений из моей базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...