1

私はウィザード コントロールを持っており、ユーザーが何人の子供を持っているかを入力することに基づいて、いくつかの入力フィールドを持つ単純なテーブルを含むユーザー コントロールを追加しています。例: 何人の子供がいるので、マスターページにもあるウィザードのステップ 5 に入るループに基づいて、ユーザー コントロール ascx を追加します。

次に、findcontrol を使用してこれらの入力ボックスへのアクセスを試行し、データベースにデータを保存できるようにします。ユーザー コントロールが表示され、ポストバック後にページの読み込み時に再作成されても、findcontrol は常に null になります。

どんな助けでも大歓迎です。コントロール ボタンの検索: Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim numbchildren As Integer = CInt(Howmanychildren.Text)

    For i As Integer = 1 To numbchildren - 1

        Dim textbox As TextBox = TryCast(Me.Wizard1.FindControl("WizardStep5").FindControl("Minor_1_Child_Name"), TextBox)
        'Dim textbox2 As TextBox = TryCast(Me.Wizard1.FindControl("WizardStep5").FindControl("Howmanychildren"), TextBox)


        If textbox IsNot Nothing Then

            Response.Write("Found TextBox1 <br>")
            Dim val As String = textbox.Text
            Response.Write(val & "<br>")

        Else
            Response.Write("not found" & "<br>")
        End If

        ' Insert into DB
        'SaveValueToDatabase(val)
    Next

End Sub

ユーザーコントロールは、ドロップダウンに機能を追加しました:

Protected Sub Doyouhavechildren_SelectedIndexChanged (オブジェクトとしての ByVal 送信者、System.EventArgs としての ByVal e) ハンドル Doyouhavechildren.SelectedIndexChanged

    Dim numbchildren As Integer = CInt(Howmanychildren.Text)
    Dim cnt As Integer = 1


    'Panel1.Controls.Clear()

    Select Case Doyouhavechildren.SelectedIndex
        Case 0



            ViewState.Add("Doyouhavechildren", numbchildren)


            Do While cnt <= numbchildren

                Dim uc As Web.UI.UserControl = DirectCast(Page.LoadControl("MinorChild.ascx"), Web.UI.UserControl)
                uc.ID = "Minor_" + cnt.ToString()
                Wizard1.ActiveStep.Controls.Add(uc)



                cnt = cnt + 1 
            Loop
            Exit Select
        Case 1

            Exit Select
    End Select

End Sub

ユーザー制御:

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="MinorChild.ascx.vb" Inherits="MinorChild" %>

名前

SS#

生年月日

検索コントロールは、静的な howmanychildren フィールドで機能します

4

1 に答える 1

1

私は基本的に自分でそれを理解しました。コンテナを参照する必要があります。それは他の誰もが言っていることですが、正しいコードは答えを無視し続けました

Dim textbox As TextBox = TryCast(Me.Wizard1.FindControl("WizardStep5").FindControl("Minor_1").FindControl("Child_Name"), TextBox)

クライアント ソースがわかりにくい場合でも、最初にユーザー コントロール名を参照してから検索する必要があります。

于 2009-09-11T16:03:16.960 に答える