Good morning,
I have a scenario where I'm creating a RadWizard control dynamically. I'm looping through an object to set up the wizard steps, and then on WizardStepCreated, I'm adding all the controls to the step. The RadWizard's RenderedSteps="All"
When the page is first rendered, everything works fine. The step Title is populated, the validation groups work fine. The issue I'm having is when I add an ActiveStepChanged method in order to save the data on each step change, I lose my step properties (.Title, .ValidationGroup, etc).
(See photos attached)
My code is below. Thank you for your help!
Chris
ContentPage:
<%@ Page Title="Application Rendering Engine" Language="vb" AutoEventWireup="false" MasterPageFile="~/Application.Master" CodeBehind="ApplicationForm.aspx.vb" Inherits="Public_Portal.ApplicationForm" %><%@ MasterType VirtualPath="~/Application.Master" %><asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <telerik:RadAjaxManagerProxy runat="server" ID="ajaxProxy"> <AjaxSettings> </AjaxSettings> </telerik:RadAjaxManagerProxy> <!-- Inside Page Body Content --> <div class="container"> <div class="row"> <div class="col-sm-12 col-md-12 col-lg-12 col-xs-12"> <!-- Breadcrumbs --> <ul class="ApplicationFormBreadcrumb"> <li> <asp:HyperLink ID="hlBreadcrumb_Home" runat="server" Text="Home" NavigateUrl="~/Default.aspx" /> </li> <li> <asp:HyperLink ID="hlBreadcrumb_Dashboard" runat="server" Text="Dashboard" NavigateUrl="~/Dashboard.aspx" /> </li> <li class="active"> <asp:HyperLink ID="hlBreadcrumb_MyApplication" runat="server" Text="My Application" NavigateUrl="#" /> </li> </ul> </div> </div> <div class="row"> <!-- Inside Content Right Side Main --> <div class="col-sm-12 col-md-12 col-lg-12 col-xs-12"> <div class="tab-content"> <telerik:RadWizard runat="server" ID="wizMyApplication" Skin="MetroTouch" RenderedSteps="All" DisplayCancelButton="true" DisplayNavigationBar="true" DisplayProgressBar="true" Width="100%" DisplayNavigationButtons="true" NavigationButtonsPosition="Bottom" ProgressBarPosition="left" NavigationBarPosition="left"> </telerik:RadWizard> </div> </div> </div> </div></asp:Content>ContentPage code-behind:
Imports System.IOImports Telerik.Web.UIImports Portal_BusinessObjectsPublic Class ApplicationForm Inherits clsPage#Region "Page Events" Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim objApplication As New clsApplication() If Not Page.IsPostBack Then If Application_ID > 0 Then objApplication = New clsApplication(Application_ID, Application_Mode) Else objApplication = New clsApplication(Application_ID, Application_Mode, Form_Version_ID, Application_EligibleProgram) End If MyApplication = objApplication '*********************************** ' BUILD WIZARD STEPS '*********************************** Dim i As Integer = 0 For Each formStep As clsFormStep In objApplication.Application_Form.Form_Steps Dim [wizStep] As New RadWizardStep() Dim strTitle As String = String.Empty Dim strTooltip As String = String.Empty If i = 0 Then [wizStep].DisplayCancelButton = False End If If clsGlobal.CurrentLang = clsGlobal.AvailableLanguages.en Then strTitle = formStep.E_Name strTooltip = formStep.E_Desc Else strTitle = formStep.F_Name strTooltip = formStep.F_Desc End If [wizStep].Title = strTitle [wizStep].ID = "step_" & formStep.Form_Step_ID [wizStep].ValidationGroup = "valGroup_" & wizStep.ID wizMyApplication.WizardSteps.Add([wizStep]) i = i + 1 Next End If End Sub#End Region#Region "Page Control Events" '************************************************************* ' ' RENDERING CONTROLS ON WIZARD STEP ' '************************************************************* Private Sub wizMyApplication_WizardStepCreated(sender As Object, e As WizardStepCreatedEventArgs) Handles wizMyApplication.WizardStepCreated Dim strStepPrefix As String = e.RadWizardStep.ID Dim strValidationGroup As String = "valGroup_" & strStepPrefix Dim intFormStepID As Integer = CInt(strStepPrefix.Replace("step_", "")) 'Add Step Validation group Dim valSummary As New ValidationSummary valSummary.ID = "valSum_" & strStepPrefix Call ConfigureValidationSummary(valSummary, strValidationGroup) e.RadWizardStep.Controls.Add(valSummary) Dim objStep As clsFormStep = MyApplication.Application_Form.Form_Steps.Find(Function(x) x.Form_Step_ID = intFormStepID) 'Loop through all fields in the Form_Step For Each field In objStep.Form_Fields Select Case field.Control_Type_Code Case clsFormStepDetail.ControlTypes.Textbox Dim txtStandard As ucTextbox = LoadControl("~/Control_Library/Standard_Controls/ucTextbox.ascx") Dim objTexbox As New clsTextbox() With objTexbox 'Set textbox properties .Textbox_Configuration = objTexbox .Validation_Group = strValidationGroup End With e.RadWizardStep.Controls.Add(txtStandard) Case clsFormStepDetail.ControlTypes.Checkbox Dim chkCheckbox As ucCheckbox = LoadControl("~/Control_Library/Standard_Controls/ucCheckbox.ascx") With chkCheckbox 'Set checkbox properties .Configure_Validation_Required_Field_Ind = field.Validation_Required_Field_Ind .Validation_Group = strValidationGroup End With e.RadWizardStep.Controls.Add(chkCheckbox) Case clsFormStepDetail.ControlTypes.Dropdown Dim ddCodeTable As ucDropdownList = LoadControl("~/Control_Library/Standard_Controls/ucDropdownList.ascx") With ddCodeTable 'Set dropdown properties .Configure_Validation_Required_Field_Ind = field.Validation_Required_Field_Ind .Validation_Group = strValidationGroup End With e.RadWizardStep.Controls.Add(ddCodeTable) End Select Next End Sub '************************************************************* ' ' FINISH BUTTON - SAVE CODE GOES HERE ' '************************************************************* Private Sub wizMyApplication_FinishButtonClick(sender As Object, e As WizardEventArgs) Handles wizMyApplication.FinishButtonClick Call SaveApplicationForm() Response.Redirect("~/Dashboard.aspx?msg=applicationSubmitted") End Sub Private Sub wizMyApplication_ActiveStepChanged(sender As Object, e As EventArgs) Handles wizMyApplication.ActiveStepChanged Call SaveApplicationForm() End Sub#End Region#Region "Functions and Sub-routines" Private Sub ConfigureValidationSummary(ByVal valSum As ValidationSummary, ByVal strValGroup As String) With valSum .DisplayMode = ValidationSummaryDisplayMode.BulletList .ShowMessageBox = False .ValidationGroup = strValGroup .ShowSummary = True .CssClass = "alert alert-danger" End With End Sub Private Sub SaveApplicationForm() 'Save form values to database here End Sub#End RegionEnd Class