' 使用 HTML 的<br>標籤來斷行。
  Private br As LiteralControl = New LiteralControl("<br />")

  ' 使用 HTML 的<hr>標籤來分隔。
  Private hr As LiteralControl = New LiteralControl("<hr />")

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

        '檢查是否為 PostBack
        If IsPostBack Then
            If ViewState("Mode").ToString = "Add" AndAlso _
                ViewState("ControlsAdded").ToString Is Nothing Then
                AddControls()
            End If

            ' 動態加入 TextBox 控制項。
            If (CInt(ViewState("FileUploadID")) > 0) Then
                For intLoop As Integer = 1 To CInt(ViewState("FileUploadID"))
                    AddNewFileUpload(intLoop.ToString())
                Next
            End If
        Else
            ViewState("Mode") = "Init"
            AddControls()
        End If
    End Sub

    ' 覆寫載入狀態的動作,以便管理狀態。
    Protected Overrides Sub LoadViewState(ByVal savedState As Object)
        MyBase.LoadViewState(savedState)
        If CType(ViewState("ControlsAdded"), Boolean) = True Then
            AddControls()
        End If
    End Sub

    Private Sub AddControls()
        ' 建立 FileUpload 控制項
        Dim UL As New FileUpload
        UL.ID = "UL_0"

        ' 將所建立的控制項加至 PlaceHolder 控制項裡。
        PlaceHolder1.Controls.Add(UL)
        PlaceHolder1.Controls.Add(hr)

        PlaceHolder1.Controls.Add(br)

        ' 確認已經動態加入控制項。
        ViewState("ControlsAdded") = True
    End Sub

    ' 建立 FileUpload 控制項。
    Private Sub AddNewFileUpload(ByVal ControlID As String)
        Dim FU As New FileUpload
        FU.ID = "TB_" & ControlID

        ' 將 FileUpload 加入特定的位置上。
        PlaceHolder1.Controls.AddAt(CInt(ControlID), FU)
    End Sub


    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' 指定所按下的按鈕模式。
        ViewState("Mode") = "Add"

        ' 為了避免 TextBox ID 相同,使用 ViewState 來記錄目前的 TextBox ID。
        If ViewState("FileUploadID") Is Nothing Then
            ViewState("FileUploadID") = 1
        Else
            ' 刻意使用 ViewState 的 Add 方法。
            ViewState.Add("FileUploadID", CInt(ViewState("FileUploadID")) + 1)
        End If

        AddNewFileUpload(ViewState("FileUploadID").ToString())
    End Sub

arrow
arrow
    全站熱搜

    kingjoy1235 發表在 痞客邦 留言(0) 人氣()