回发期间保留动态创建的控件 - VB.net [英] Retaining dynamically created controls during PostBack - VB.net

查看:349
本文介绍了回发期间保留动态创建的控件 - VB.net的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有,有一个下拉与值1-10列表形式的面板。当在面板上的一个按钮是pssed $ P $,该面板将不可见和第二可见。在第二盘我有被动态生成控件行。行ŧ诶数由上下拉列表则selectedItem决定。

我的问题是,当我要进行验证,然后存储的被动态创建的控件内容的值时,控制器将被删除。

据我所知,这是与页面的生命周期和动态创建的控件的持久性做的,但我不知道要避开这个问题。我已阅读这里的许多其他类似的问题,很少有谁解决这个,所以我仍然不明白工作的例子。这包括动态创建的控件需要在页面加载或pageinit创建建议,怎么会这样,因为我们不知道有多少把握?

任何帮助很多AP preciated,一如既往。

 进口DotNetNuke.Entities.Modules
DotNetNuke的进口
进口系统
进口System.Web.UI程序
进口System.Web.UI.WebControls
进口System.Collections.Generic
进口的System.Reflection
进口System.Web.Configuration
进口System.Net.Mail
进口System.Data.SqlClient的部分类视图
继承SeatPlannerModuleBase
实现IActionable
昏暗有效的String =成功私人小组的Page_Load(BYVAL发件人为System.Object的,BYVAL E上System.EventArgs)把手MyBase.Load,Me.Load
    尝试        如果没有Page.IsPostBack然后        万一    抓住EXC由于异常模块加载失败
        ProcessModuleLoadException(ME,EXC)
    结束Try
结束小组公共只读属性ModuleActions()作为Entities.Modules.Actions.ModuleActionCollection实现Entities.Modules.IActionable.ModuleActions
    得到
        昏暗的操作作为新Entities.Modules.Actions.ModuleActionCollection
        Actions.Add(GetNextActionID,Localization.GetString(Entities.Modules.Actions.ModuleActionType.AddContent,LocalResourceFile),Entities.Modules.Actions.ModuleActionType.AddContent,,,EditUrl(),FALSE,DotNetNuke.Security.SecurityAccessLevel .Edit,真,假)
        返回操作
    到底得的
高端物业保护小组Filldata()
    昏暗康恩作为新的SqlConnection()
    conn.ConnectionString = WebConfigurationManager.ConnectionStrings(Congress_SeatPlanner_ConnectionString)。的ConnectionString
    昏暗QSTR作为字符串=SELECT * FROM [Seat_planner_2013]。[DBO]。[预订]
    尝试
        使用连接作为新的SqlConnection(conn.ConnectionString)
            connection.Open()
            昏暗的命令作为新的SqlCommand(QSTR,连接)
            昏暗的读者作为SqlDataReader的= Command.ExecuteReader却()
            如果reader.Read()然后
                尝试
                    昏暗的标题作为字符串                    标题=读卡器(题)
                    标题= title.Trim
                    title_Txt.Text =冠军
                抓住
                    title_Txt.Text =
                结束Try
                尝试
                    first_name_Txt.Text =读卡器(FIRST_NAME)
                抓住
                    first_name_Txt.Text =
                结束Try
                尝试
                    surname_Txt.Text =读卡器(姓)
                抓住
                    surname_Txt.Text =
                结束Try
                尝试
                    company_name_Txt.Text =读卡器(COMPANY_NAME)
                抓住
                    company_name_Txt.Text =
                结束Try
                尝试
                    contact_number_Txt.Text =读卡器(CONTACT_PHONE)
                抓住
                    contact_number_Txt.Text =
                结束Try
                尝试
                    contact_email_Txt.Text =读卡器(CONTACT_EMAIL)
                抓住
                    contact_email_Txt.Text =
                结束Try
                尝试
                    number_of_tickets_Ddl.SelectedValue =读卡器(number_of_tickets)
                抓住
                    number_of_tickets_Ddl.SelectedValue =
                结束Try
                尝试
                    purchase_date_Txt.Text =读卡器(date_of_purchase)
                抓住
                    purchase_date_Txt.Text =
                结束Try
            万一
        使用完
    抓住EX为例外
        ErrLabel_Lbl.Visible = TRUE
        ErrLabel_Lbl.Text = ex.Message.ToString
    结束Try
结束小组保护小组的validate()    如果title_Txt.Text.Length< 2然后
        title_error_Lbl.Text =请输入标题
        有效=不及格
    其他
        title_error_Lbl.Text =*
    万一
    如果first_name_Txt.Text.Length< 1然后
        first_name_error_Lbl.Text =请输入名字
        有效=不及格
    其他
        first_name_error_Lbl.Text =*
    万一
    如果surname_Txt.Text.Length< 1然后
        surname_error_Lbl.Text =请输入姓
        有效=不及格
    其他
        surname_error_Lbl.Text =*
    万一
    如果company_name_Txt.Text.Length< 1然后
        comnpany_name_error_Lbl.Text =请输入公司名称
        有效=不及格
    其他
        comnpany_name_error_Lbl.Text =*
    万一
    如果contact_email_Txt.Text.Length< 1然后
        contact_email_error_Lbl.Text =请输入联系人的电子邮件地址
        有效=不及格
    其他
        contact_email_error_Lbl.Text =*
    万一
    如果contact_number_Txt.Text.Length< 1然后
        contact_phone_error_Lbl.Text =请输入联系人的电话号码
        有效=不及格
    其他
        contact_phone_error_Lbl.Text =*
    万一
    如果number_of_tickets_Ddl.SelectedValue =请选择然后
        number_of_tickets_error_Lbl.Text =请选择一个数字的门票分配的
        有效=不及格
    其他
        number_of_tickets_error_Lbl.Text =*
    万一
    如果purchase_date_Txt.Text.Length< 1然后
        date_of_purchase_error_Lbl.Text =请输入您购买车票的日期
        有效=不及格
    其他
        date_of_purchase_error_Lbl.Text =*
    万一    如果有效=失败然后
        ErrLabel_Lbl.Text =验证失败
    其他
        ErrLabel_Lbl.Text =验证成功
    万一结束小组保护小组validate_step2()这里的验证不起作用由于回传问题结束小组保护小组IterateThroughTitle(BYVAL家长作为对照)
    昏暗的计数为整数= 1    对于每个C作为控制在title_Placeholder.Controls
        如果c [的GetType()。toString()方法。等于(System.Web.UI.WebControls.TextBox)AndAlso运算c.ID是Nothing然后
            DirectCast(C,文本框)。文本=TextBox_Title+ count.ToString()
            DirectCast(C,文本框).ID =TextBox_Title_+ count.ToString()
            DirectCast(C,文本框).CssClass =DYN_TextBox
            数+ = 1
        万一        如果c.Controls.Count> 0,则
            IterateThroughTitle(三)
        万一
    下一个
结束小组保护小组IterateThroughFirstname(BYVAL家长作为对照)
    昏暗的计数为整数= 1    对于每个C作为控制在firstname_Placeholder.Controls
        如果c [的GetType()。toString()方法。等于(System.Web.UI.WebControls.TextBox)AndAlso运算c.ID是Nothing然后
            DirectCast(C,文本框)。文本=TextBox_Firstname+ count.ToString()
            DirectCast(C,文本框).ID =TextBox_Firstname_+ count.ToString()
            DirectCast(C,文本框).CssClass =DYN_TextBox
            数+ = 1
        万一        如果c.Controls.Count> 0,则
            IterateThroughFirstname(三)
        万一
    下一个
结束小组保护小组IterateThroughSurname(BYVAL家长作为对照)
    昏暗的计数为整数= 1    对于每个C作为控制在surname_Placeholder.Controls
        如果c [的GetType()。toString()方法。等于(System.Web.UI.WebControls.TextBox)AndAlso运算c.ID是Nothing然后
            DirectCast(C,文本框)。文本=TextBox_Surname+ count.ToString()
            DirectCast(C,文本框).ID =TextBox_Surname_+ count.ToString()
            DirectCast(C,文本框).CssClass =DYN_TextBox
            数+ = 1
        万一        如果c.Controls.Count> 0,则
            IterateThroughSurname(三)
        万一
    下一个
结束小组保护小组IterateThroughTicketNum(BYVAL家长作为对照)
    昏暗的计数为整数= 1    对于每个C作为控制在ticketNum_Placeholder.Controls
        如果c [的GetType()。toString()方法。等于(System.Web.UI.WebControls.TextBox)AndAlso运算c.ID是Nothing然后
            DirectCast(C,文本框)。文本=TextBox_TicketNum+ count.ToString()
            DirectCast(C,文本框).ID =TextBox_TicketNum_+ count.ToString()
            DirectCast(C,文本框).CssClass =DYN_TextBox
            数+ = 1
        万一        如果c.Controls.Count> 0,则
            IterateThroughTicketNum(三)
        万一
    下一个
结束小组保护小组IterateThroughBooking(BYVAL家长作为对照)
    昏暗的计数为整数= 1    对于每个C作为控制在booking_Placeholder.Controls
        如果c [的GetType()。toString()方法。等于(System.Web.UI.WebControls.Label)AndAlso运算c.ID是Nothing然后
            DirectCast(C,标签)。文本=预订号+ count.ToString()
            DirectCast(C,标签).ID =BookLabel_+ count.ToString()
            DirectCast(C,标签).CssClass =DYN_Label
            数+ = 1
        万一        如果c.Controls.Count> 0,则
            IterateThroughBooking(三)
        万一
    下一个
结束小组保护小组IterateThroughReservation(BYVAL家长作为对照)
    昏暗的计数为整数= 1    对于每个C作为控制在res_Placeholder.Controls
        如果c [的GetType()。toString()方法。等于(System.Web.UI.WebControls.Label)AndAlso运算c.ID是Nothing然后
            DirectCast(C,标签)。文本=来宾
            DirectCast(C,标签).ID =ResLabel_+ count.ToString()
            DirectCast(C,标签).CssClass =DYN_Label
            数+ = 1
        万一        如果c.Controls.Count> 0,则
            IterateThroughReservation(三)
        万一
    下一个
结束小组保护小组Retreive_first_row()    CTYPE(Me.FindControl(ResLabel_1),标签)。文本()=您
    CTYPE(Me.FindControl(TextBox_Title_1),文本框)。文本()= title_Txt.Text
    CTYPE(Me.FindControl(TextBox_Title_1),文本框).Enabled()= FALSE
    CTYPE(Me.FindControl(TextBox_Firstname_1),文本框)。文本()= first_name_Txt.Text
    CTYPE(Me.FindControl(TextBox_Firstname_1),文本框).Enabled()= FALSE
    CTYPE(Me.FindControl(TextBox_Surname_1),文本框)。文本()= surname_Txt.Text
    CTYPE(Me.FindControl(TextBox_Surname_1),文本框).Enabled()= FALSE结束小组保护小组CreateTextBoxes()    如果不Page.IsValid然后
        返回
    万一    昏暗的5.3,整数= number_of_tickets_Ddl.SelectedValue    对于我作为整数= 0到n - 1
        res_Placeholder.Controls.Add(新建标签())
        booking_Placeholder.Controls.Add(新建标签())        title_Placeholder.Controls.Add(新文本框())
        firstname_Placeholder.Controls.Add(新文本框())
        surname_Placeholder.Controls.Add(新文本框())
        ticketNum_Placeholder.Controls.Add(新文本框())    下一个    IterateThroughBooking(ME)
    IterateThroughReservation(ME)
    IterateThroughTitle(ME)
    IterateThroughFirstname(ME)
    IterateThroughSurname(ME)
    IterateThroughTicketNum(ME)    Retreive_first_row()结束小组保护小组testconn_submit_Btn_Click(BYVAL发件人为对象,BYVAL E上EventArgs的)把手testconn_submit_Btn.Click    Filldata()结束小组保护小组next_submit_Btn_Click(BYVAL发件人为对象,BYVAL E上EventArgs的)把手next_submit_Btn.Click    验证()    如果有效=失败然后    其他        Step1_Pnl.Visible =假
        Step2_Pnl.Visible = TRUE
        CreateTextBoxes()
        Button1.Attributes.Add(onclick事件,validate_step2();返回false;)
    万一结束小组保护小组clear_submit_Btn_Click(BYVAL发件人为对象,BYVAL E上EventArgs的)把手clear_submit_Btn.Click    title_Txt.Text =
    first_name_Txt.Text =
    surname_Txt.Text =
    company_name_Txt.Text =
    contact_number_Txt.Text =
    contact_email_Txt.Text =
    number_of_tickets_Ddl.SelectedValue =请选择
    purchase_date_Txt.Text =    title_error_Lbl.Text =*
    first_name_error_Lbl.Text =*
    surname_error_Lbl.Text =*
    comnpany_name_error_Lbl.Text =*
    contact_phone_error_Lbl.Text =*
    contact_email_error_Lbl.Text =*
    number_of_tickets_error_Lbl.Text =*
    date_of_purchase_error_Lbl.Text =*结束小组保护小组back_Btn_Click(BYVAL发件人为对象,BYVAL E上EventArgs的)把手back_Btn.Click    Step1_Pnl.Visible = TRUE
    Step2_Pnl.Visible =假结束小组保护小组next_submit2_Btn_Click(BYVAL发件人为对象,BYVAL E上EventArgs的)把手next_submit2_Btn.Click    validate_step2()结束小组末级


解决方案

第一次的用户选择在下拉一个项目下来,你得到的计数,并创建动态控件。诀窍在于记住计数为下回传

您可以使用会话此记住这个数。

现在,当您收到第二个回传,您可以重新创建在初始化控件。如果您希望这些动态创建的控件接收事件,加载为时已晚。

I have a panel with a form that has a drop down list with values 1-10. When a button on the panel is pressed, that panel is made invisible and a second made visible. On the second panel I have rows of controls being generated dynamically. T eh number of rows is determined by the selecteditem on the drop down list.

My problem is that when I want to carry out validation and then storing of the values of the contents of controls that are dynamically created, the controls are removed.

I understand this is to do with the lifecycle of the page and the persistence of the dynamically created controls but I have no idea to get round the problem. I have read many other similar questions on here and few have working examples of who to solve this so I am none the wiser. This includes suggestions that the dynamically created controls need to be created on pageload or pageinit, how can this be since we don't know how many to make?

Any help is much appreciated, as always.

Imports DotNetNuke.Entities.Modules
Imports DotNetNuke
Imports System
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Collections.Generic
Imports System.Reflection
Imports System.Web.Configuration
Imports System.Net.Mail
Imports System.Data.SqlClient

Partial Class View
Inherits SeatPlannerModuleBase
Implements IActionable
Dim valid As String = "success"

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load, Me.Load
    Try

        If Not Page.IsPostBack Then

        End If

    Catch exc As Exception        'Module failed to load
        ProcessModuleLoadException(Me, exc)
    End Try
End Sub

Public ReadOnly Property ModuleActions() As Entities.Modules.Actions.ModuleActionCollection Implements Entities.Modules.IActionable.ModuleActions
    Get
        Dim Actions As New Entities.Modules.Actions.ModuleActionCollection
        Actions.Add(GetNextActionID, Localization.GetString(Entities.Modules.Actions.ModuleActionType.AddContent, LocalResourceFile), Entities.Modules.Actions.ModuleActionType.AddContent, "", "", EditUrl(), False, DotNetNuke.Security.SecurityAccessLevel.Edit, True, False)
        Return Actions
    End Get
End Property

Protected Sub Filldata()
    Dim conn As New SqlConnection()
    conn.ConnectionString = WebConfigurationManager.ConnectionStrings("Congress_SeatPlanner_ConnectionString").ConnectionString
    Dim Qstr As String = "select * From [Seat_planner_2013].[dbo].[booking]"
    Try
        Using connection As New SqlConnection(conn.ConnectionString)
            connection.Open()
            Dim command As New SqlCommand(Qstr, connection)
            Dim reader As SqlDataReader = command.ExecuteReader()
            If reader.Read() Then
                Try
                    Dim title As String

                    title = reader("title")
                    title = title.Trim
                    title_Txt.Text = title
                Catch
                    title_Txt.Text = ""
                End Try
                Try
                    first_name_Txt.Text = reader("first_name")
                Catch
                    first_name_Txt.Text = ""
                End Try
                Try
                    surname_Txt.Text = reader("surname")
                Catch
                    surname_Txt.Text = ""
                End Try
                Try
                    company_name_Txt.Text = reader("company_name")
                Catch
                    company_name_Txt.Text = ""
                End Try
                Try
                    contact_number_Txt.Text = reader("contact_phone")
                Catch
                    contact_number_Txt.Text = ""
                End Try
                Try
                    contact_email_Txt.Text = reader("contact_email")
                Catch
                    contact_email_Txt.Text = ""
                End Try
                Try
                    number_of_tickets_Ddl.SelectedValue = reader("number_of_tickets")
                Catch
                    number_of_tickets_Ddl.SelectedValue = ""
                End Try
                Try
                    purchase_date_Txt.Text = reader("date_of_purchase")
                Catch
                    purchase_date_Txt.Text = ""
                End Try
            End If
        End Using
    Catch ex As Exception
        ErrLabel_Lbl.Visible = True
        ErrLabel_Lbl.Text = ex.Message.ToString
    End Try
End Sub

Protected Sub validate()

    If title_Txt.Text.Length < 2 Then
        title_error_Lbl.Text = "Please enter a title"
        valid = "fail"
    Else
        title_error_Lbl.Text = "*"
    End If
    If first_name_Txt.Text.Length < 1 Then
        first_name_error_Lbl.Text = "Please enter a first name"
        valid = "fail"
    Else
        first_name_error_Lbl.Text = "*"
    End If
    If surname_Txt.Text.Length < 1 Then
        surname_error_Lbl.Text = "Please enter a surname"
        valid = "fail"
    Else
        surname_error_Lbl.Text = "*"
    End If
    If company_name_Txt.Text.Length < 1 Then
        comnpany_name_error_Lbl.Text = "Please enter a company name"
        valid = "fail"
    Else
        comnpany_name_error_Lbl.Text = "*"
    End If
    If contact_email_Txt.Text.Length < 1 Then
        contact_email_error_Lbl.Text = "Please enter a contact email address"
        valid = "fail"
    Else
        contact_email_error_Lbl.Text = "*"
    End If
    If contact_number_Txt.Text.Length < 1 Then
        contact_phone_error_Lbl.Text = "Please enter a contact phone number"
        valid = "fail"
    Else
        contact_phone_error_Lbl.Text = "*"
    End If
    If number_of_tickets_Ddl.SelectedValue = "Please select" Then
        number_of_tickets_error_Lbl.Text = "Please select a number of tickets to allocate"
        valid = "fail"
    Else
        number_of_tickets_error_Lbl.Text = "*"
    End If
    If purchase_date_Txt.Text.Length < 1 Then
        date_of_purchase_error_Lbl.Text = "Please enter the date you purchased the tickets"
        valid = "fail"
    Else
        date_of_purchase_error_Lbl.Text = "*"
    End If

    If valid = "fail" Then
        ErrLabel_Lbl.Text = "Failed validation"
    Else
        ErrLabel_Lbl.Text = "Validation succeeded"
    End If

End Sub

Protected Sub validate_step2()

'validation here that doesn't work due to the postback issue

End Sub

Protected Sub IterateThroughTitle(ByVal parent As Control)
    Dim count As Integer = 1

    For Each c As Control In title_Placeholder.Controls
        If c.[GetType]().ToString().Equals("System.Web.UI.WebControls.TextBox") AndAlso c.ID Is Nothing Then
            'DirectCast(c, TextBox).Text = "TextBox_Title " + count.ToString()
            DirectCast(c, TextBox).ID = "TextBox_Title_" + count.ToString()
            DirectCast(c, TextBox).CssClass = "DYN_TextBox"
            count += 1
        End If

        If c.Controls.Count > 0 Then
            IterateThroughTitle(c)
        End If
    Next
End Sub

Protected Sub IterateThroughFirstname(ByVal parent As Control)
    Dim count As Integer = 1

    For Each c As Control In firstname_Placeholder.Controls
        If c.[GetType]().ToString().Equals("System.Web.UI.WebControls.TextBox") AndAlso c.ID Is Nothing Then
            'DirectCast(c, TextBox).Text = "TextBox_Firstname " + count.ToString()
            DirectCast(c, TextBox).ID = "TextBox_Firstname_" + count.ToString()
            DirectCast(c, TextBox).CssClass = "DYN_TextBox"
            count += 1
        End If

        If c.Controls.Count > 0 Then
            IterateThroughFirstname(c)
        End If
    Next
End Sub

Protected Sub IterateThroughSurname(ByVal parent As Control)
    Dim count As Integer = 1

    For Each c As Control In surname_Placeholder.Controls
        If c.[GetType]().ToString().Equals("System.Web.UI.WebControls.TextBox") AndAlso c.ID Is Nothing Then
            'DirectCast(c, TextBox).Text = "TextBox_Surname " + count.ToString()
            DirectCast(c, TextBox).ID = "TextBox_Surname_" + count.ToString()
            DirectCast(c, TextBox).CssClass = "DYN_TextBox"
            count += 1
        End If

        If c.Controls.Count > 0 Then
            IterateThroughSurname(c)
        End If
    Next
End Sub

Protected Sub IterateThroughTicketNum(ByVal parent As Control)
    Dim count As Integer = 1

    For Each c As Control In ticketNum_Placeholder.Controls
        If c.[GetType]().ToString().Equals("System.Web.UI.WebControls.TextBox") AndAlso c.ID Is Nothing Then
            'DirectCast(c, TextBox).Text = "TextBox_TicketNum " + count.ToString()
            DirectCast(c, TextBox).ID = "TextBox_TicketNum_" + count.ToString()
            DirectCast(c, TextBox).CssClass = "DYN_TextBox"
            count += 1
        End If

        If c.Controls.Count > 0 Then
            IterateThroughTicketNum(c)
        End If
    Next
End Sub

Protected Sub IterateThroughBooking(ByVal parent As Control)
    Dim count As Integer = 1

    For Each c As Control In booking_Placeholder.Controls
        If c.[GetType]().ToString().Equals("System.Web.UI.WebControls.Label") AndAlso c.ID Is Nothing Then
            DirectCast(c, Label).Text = "Booking #" + count.ToString()
            DirectCast(c, Label).ID = "BookLabel_" + count.ToString()
            DirectCast(c, Label).CssClass = "DYN_Label"
            count += 1
        End If

        If c.Controls.Count > 0 Then
            IterateThroughBooking(c)
        End If
    Next
End Sub

Protected Sub IterateThroughReservation(ByVal parent As Control)
    Dim count As Integer = 1

    For Each c As Control In res_Placeholder.Controls
        If c.[GetType]().ToString().Equals("System.Web.UI.WebControls.Label") AndAlso c.ID Is Nothing Then
            DirectCast(c, Label).Text = "Guest"
            DirectCast(c, Label).ID = "ResLabel_" + count.ToString()
            DirectCast(c, Label).CssClass = "DYN_Label"
            count += 1
        End If

        If c.Controls.Count > 0 Then
            IterateThroughReservation(c)
        End If
    Next
End Sub

Protected Sub Retreive_first_row()

    CType(Me.FindControl("ResLabel_1"), Label).Text() = "You"
    CType(Me.FindControl("TextBox_Title_1"), TextBox).Text() = title_Txt.Text
    CType(Me.FindControl("TextBox_Title_1"), TextBox).Enabled() = False
    CType(Me.FindControl("TextBox_Firstname_1"), TextBox).Text() = first_name_Txt.Text
    CType(Me.FindControl("TextBox_Firstname_1"), TextBox).Enabled() = False
    CType(Me.FindControl("TextBox_Surname_1"), TextBox).Text() = surname_Txt.Text
    CType(Me.FindControl("TextBox_Surname_1"), TextBox).Enabled() = False

End Sub

Protected Sub CreateTextBoxes()

    If Not Page.IsValid Then
        Return
    End If

    Dim n As Integer = number_of_tickets_Ddl.SelectedValue

    For i As Integer = 0 To n - 1
        res_Placeholder.Controls.Add(New Label())
        booking_Placeholder.Controls.Add(New Label())

        title_Placeholder.Controls.Add(New TextBox())
        firstname_Placeholder.Controls.Add(New TextBox())
        surname_Placeholder.Controls.Add(New TextBox())
        ticketNum_Placeholder.Controls.Add(New TextBox())

    Next

    IterateThroughBooking(Me)
    IterateThroughReservation(Me)
    IterateThroughTitle(Me)
    IterateThroughFirstname(Me)
    IterateThroughSurname(Me)
    IterateThroughTicketNum(Me)

    Retreive_first_row()

End Sub

Protected Sub testconn_submit_Btn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles testconn_submit_Btn.Click

    Filldata()

End Sub

Protected Sub next_submit_Btn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles next_submit_Btn.Click

    validate()

    If valid = "fail" Then

    Else

        Step1_Pnl.Visible = False
        Step2_Pnl.Visible = True
        CreateTextBoxes()
        Button1.Attributes.Add("OnClick", "validate_step2(); return false;")
    End If

End Sub

Protected Sub clear_submit_Btn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles clear_submit_Btn.Click

    title_Txt.Text = ""
    first_name_Txt.Text = ""
    surname_Txt.Text = ""
    company_name_Txt.Text = ""
    contact_number_Txt.Text = ""
    contact_email_Txt.Text = ""
    number_of_tickets_Ddl.SelectedValue = "Please select"
    purchase_date_Txt.Text = ""

    title_error_Lbl.Text = "*"
    first_name_error_Lbl.Text = "*"
    surname_error_Lbl.Text = "*"
    comnpany_name_error_Lbl.Text = "*"
    contact_phone_error_Lbl.Text = "*"
    contact_email_error_Lbl.Text = "*"
    number_of_tickets_error_Lbl.Text = "*"
    date_of_purchase_error_Lbl.Text = "*"

End Sub

Protected Sub back_Btn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles back_Btn.Click

    Step1_Pnl.Visible = True
    Step2_Pnl.Visible = False

End Sub

Protected Sub next_submit2_Btn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles next_submit2_Btn.Click

    validate_step2()

End Sub

End Class

解决方案

The first time your user selects an Item in the drop down, you get the count and create dynamic controls. The trick lies in remembering the count for the next PostBack.

You can use the session for this to remember this count.

Now when you receive the second PostBack, you can recreate the controls on Init. If you want these dynamically created controls to receive events, Load is too late.

这篇关于回发期间保留动态创建的控件 - VB.net的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆