private Button BuildButton(string buttonText, int position, string clientId) { Button btn = new Button(); btn.ID = String.Format("btn{0}_{1}", buttonText.Substring(0, buttonText.Length > 4 ? 4 : buttonText.Length), position.ToString()); btn.Text = btn.CommandName = buttonText; btn.CommandArgument = clientId; btn.CausesValidation = true; if (buttonText.ToLower() == "previous") { btn.CausesValidation = false; } else { btn.ValidationGroup = FormBuilder_Module.GetValidationGroup(this.ModuleId); } btn.Click += new EventHandler(LoadPage); return(btn); }
private void SaveIncrementalFormData() { FormBuilderDataContext dc = new FormBuilderDataContext(); FormBuilder_Module form = (from m in dc.FormBuilder_Modules where m.ModuleId == this.ModuleId select m).Single(); //save the form object. FormBuilder_Response formResponse = (from r in dc.FormBuilder_Responses where r.Id == ResponseId select r).FirstOrDefault(); if (formResponse == null) { formResponse = new FormBuilder_Response(); dc.FormBuilder_Responses.InsertOnSubmit(formResponse); formResponse.ModuleId = this.ModuleId; formResponse.CreatedBy = this.Page.User.Identity.Name; formResponse.CreatedOn = DateTime.Now; formResponse.IPAddress = this.Page.Request.UserHostAddress; dc.SubmitChanges(); ResponseId = formResponse.Id; } //save input for each form field. foreach (FormBuilder_Field f in _fields_controls.Keys) { FormBuilder_FieldInput fieldInput = (from fi in dc.FormBuilder_FieldInputs where fi.ResponseId == ResponseId where fi.FieldId == f.Id select fi).FirstOrDefault(); if (fieldInput == null) { fieldInput = new FormBuilder_FieldInput(); dc.FormBuilder_FieldInputs.InsertOnSubmit(fieldInput); } fieldInput.ResponseId = formResponse.Id; fieldInput.FieldId = f.Id; if (f.Type == (int)FormBuilder_Field.FieldType.FileUpload) { WebControl fi; _fields_controls.TryGetValue(f, out fi); if (((FileUpload)fi).HasFile) { var fiUploadFile = new FileInfo(((FileUpload)fi).FileName); var sFileName = fiUploadFile.Name.Substring(0, fiUploadFile.Name.LastIndexOf(".")) + "_" + Guid.NewGuid() + fiUploadFile.Extension; var uploadPath = this.MapPath(ConfigurationManager.AppSettings["FormBuilder_UploadDirectory"]) + "\\" + sFileName; ((FileUpload)fi).SaveAs(uploadPath); fieldInput.InputValue = ConfigurationManager.AppSettings["FormBuilder_UploadDirectory"] + "\\" + sFileName; } } else { fieldInput.SetInputValueFromControlValue(_fields_controls[f]); } dc.SubmitChanges(); } }
//create controls *before* viewstate is restored. //ASP.NET restores the viewstate tree based on the control tree. As long as //we re-create the control tree identically on each postback, the viewstate //will get restored automatically. //see http://geekswithblogs.net/FrostRed/archive/2007/02/17/106547.aspx protected override void OnInit(EventArgs e) { FormBuilderDataContext dc = new FormBuilderDataContext(); FormBuilder_Module settings = (from m in dc.FormBuilder_Modules where m.ModuleId == this.ModuleId select m).Single(); List <FormBuilder_Field> lFields = settings.FormBuilder_Fields.OrderBy(x => x.SortOrder).ToList(); IList <Panel> pnlCollection = GetPanelControls(lFields); if (pnlCollection != null && pnlCollection.Count > 0) { #region Form Page Creation int pnlCount = pnlCollection.Count; if (pnlCount >= 1) { for (int i = 0; i < pnlCount; i++) { string sortOrder = String.Empty; string clientId = String.Empty; try { if (pnlCollection[i + 1] != null) { sortOrder = pnlCollection[i + 1].Attributes["SortOrder"]; clientId = pnlCollection[i + 1].ID; } } catch (ArgumentOutOfRangeException) { sortOrder = (lFields[lFields.Count - 1].SortOrder + 1).ToString(); } FormBuilderResponseValidationSummary.ValidationGroup = FormBuilder_Module.GetValidationGroup(this.ModuleId); List <FormBuilder_Field> childCollection = GetChildCollection(lFields, pnlCollection[i].Attributes["SortOrder"], sortOrder); foreach (FormBuilder_Field f in childCollection) { FormBuilderFieldInput_display ctl = (FormBuilderFieldInput_display)this.LoadControl("FormBuilderFieldInput_display.ascx"); if (ctl != null) { ctl.StyleName = settings.StyleName; } FieldInputList.Controls.Add(pnlCollection[i]); pnlCollection[i].Controls.Add(ctl); _fields_controls.Add(f, ctl.LoadField(f)); } Button btnNext = BuildButton("Next", i, clientId); Button btnPrev = BuildButton("Previous", i, (i - 1) > 0 ? pnlCollection[i - 1].ID : pnlCollection[0].ID); if (i == 0) { pnlCollection[i].Visible = true; if (pnlCollection.Count > 1) { pnlCollection[i].Controls.Add(btnNext); } } else if (i == pnlCount - 1) { pnlCollection[i].Controls.Add(btnPrev); pnlCollection[i].Controls.Add(BuildButton(String.IsNullOrEmpty(settings.SubmitButtonText) ? "Submit" : settings.SubmitButtonText, i, pnlCollection[i].ID)); } else // All other panels { pnlCollection[i].Controls.Add(btnPrev); pnlCollection[i].Controls.Add(btnNext); } } } #endregion } else { #region Form Creation foreach (FormBuilder_Field f in lFields) { FormBuilderFieldInput_display fieldCtl = (FormBuilderFieldInput_display)this.LoadControl("FormBuilderFieldInput_display.ascx"); if (fieldCtl != null) { fieldCtl.StyleName = settings.StyleName; } FieldInputList.Controls.Add(fieldCtl); _fields_controls.Add(f, fieldCtl.LoadField(f)); } FormBuilderResponseValidationSummary.ValidationGroup = FormBuilderResponse_SaveButton.ValidationGroup = FormBuilder_Module.GetValidationGroup(this.ModuleId); buttonDiv.Visible = true; FormBuilderResponse_SaveButton.Visible = (null != lFields && lFields.Count > 0); if ((settings != null) && (!string.IsNullOrEmpty(settings.SubmitButtonText))) { FormBuilderResponse_SaveButton.Text = settings.SubmitButtonText; } string buttonDivClass; if (!string.IsNullOrEmpty(settings.StyleName) && settings.StyleName.ToLower() != "block") { buttonDivClass = "field-" + settings.StyleName; } else { buttonDivClass = "field"; } buttonDiv.Attributes.Add("class", buttonDivClass); #endregion } base.OnInit(e); }
protected void FormBuilderResponse_SaveButton_Click(object sender, EventArgs e) { if (Page.IsValid) { if (ValidateRequest()) { FormBuilderDataContext dc = new FormBuilderDataContext(); FormBuilder_Module form = (from f in dc.FormBuilder_Modules where f.ModuleId == this.ModuleId select f).Single(); //save the form object. FormBuilder_Response formResponse = (from r in dc.FormBuilder_Responses where r.ModuleId == this.ModuleId && r.Id == ResponseId select r).SingleOrDefault(); if (formResponse == null) { formResponse = new FormBuilder_Response(); dc.FormBuilder_Responses.InsertOnSubmit(formResponse); formResponse.ModuleId = this.ModuleId; formResponse.CreatedBy = this.Page.User.Identity.Name; formResponse.CreatedOn = DateTime.Now; formResponse.IPAddress = this.Page.Request.UserHostAddress; dc.SubmitChanges(); } // save the referrer info (if available) if (Session["session_referrer"] != null) { string referringUrl = Session["session_referringUrl"] as string; string landingUrl = Session["session_landingUrl"] as string; string domain = Session["session_referrer"] as string; string query = Session["session_keywords"] as string; FormBuilder_ResponseReferrer referrer = new FormBuilder_ResponseReferrer(); dc.FormBuilder_ResponseReferrers.InsertOnSubmit(referrer); referrer.ResponseId = formResponse.Id; referrer.referringUrl = referringUrl; referrer.landingUrl = landingUrl; referrer.domain = domain; referrer.query = query; dc.SubmitChanges(); } //save input for each form field. foreach (FormBuilder_Field f in _fields_controls.Keys) { // Find any existing field input and update it. FormBuilder_FieldInput fieldInput = (from fi in dc.FormBuilder_FieldInputs where fi.ResponseId == formResponse.Id && fi.FieldId == f.Id select fi).SingleOrDefault(); if (fieldInput == null) { fieldInput = new FormBuilder_FieldInput(); dc.FormBuilder_FieldInputs.InsertOnSubmit(fieldInput); fieldInput.FieldId = f.Id; fieldInput.ResponseId = formResponse.Id; } if (f.Type == (int)FormBuilder_Field.FieldType.FileUpload) { WebControl fi; _fields_controls.TryGetValue(f, out fi); if (((FileUpload)fi).HasFile) { var fiUploadFile = new FileInfo(((FileUpload)fi).FileName); var sFileName = fiUploadFile.Name.Substring(0, fiUploadFile.Name.LastIndexOf(".")) + "_" + Guid.NewGuid() + fiUploadFile.Extension; string strUploadDirectory = this.MapPath(ConfigurationManager.AppSettings["FormBuilder_UploadDirectory"]); EnsureDirectory(strUploadDirectory); var uploadPath = Path.Combine(strUploadDirectory, sFileName); ((FileUpload)fi).SaveAs(uploadPath); fieldInput.InputValue = ConfigurationManager.AppSettings["FormBuilder_UploadDirectory"] + "\\" + sFileName; } } else { fieldInput.SetInputValueFromControlValue(_fields_controls[f]); } } formResponse.IsComplete = true; dc.SubmitChanges(); //send email notification. formResponse.EmailNotifyAdmin(); formResponse.EmailAcknowledgement(); ResponseId = 0; //redirect to confirmation page. string redirectPath = "~"; if (form.ConfirmationPageId.HasValue) { WebpageInfo page = Webpage.GetWebpage(form.ConfirmationPageId.Value); if (null != page && !string.IsNullOrEmpty(page.Path)) { redirectPath = page.Path; } } Response.Redirect(redirectPath); } } }