ASP.NET,VB:如何从后面的代码访问FormView中的控件?

Sar*_*ara 8 vb.net asp.net controls formview code-behind

我在FormView控件中有一个复选框和一个面板,我需要从后面的代码中访问它们,以便使用复选框来确定面板是否可见.这是我最初使用的代码,但由于我将控件放在FormView中,它不再有效.

Protected Sub checkGenEd_CheckedChanged(ByVal sender As Object, _
                                         ByVal e As System.EventArgs)
    If checkGenEd.Checked = True Then
        panelOutcome.Visible = True
    Else
        panelOutcome.Visible = False
    End If
End Sub 
Run Code Online (Sandbox Code Playgroud)

我已经开始根据我在这里查看的其他问题来解决这个问题,但是所有问题都是在C#而不是VB中,所以这就是我所得到的:

Protected Sub FormView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles FormView1.DataBound
    If FormView1.CurrentMode = FormViewMode.Edit Then

    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

所以,是的,我不确定如何完成它.对不起,这可能是非常基本的,但我是新来的,任何帮助都将不胜感激!

编辑:这是我现在的代码:

Protected Sub FormView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles FormView1.DataBound
    If FormView1.CurrentMode = FormViewMode.Edit Then

        CheckBox checkGenEd = formview1.FindControl("checkGenEd");
        Panel panelOutcome = formview1.FindControl("panelOutcome");

    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

它还说没有声明checkGenEd和panelOutcome.

编辑:我将我的代码更改为此但它仍然无法正常工作:

Protected Sub FormView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles FormView1.DataBound
    If FormView1.CurrentMode = FormViewMode.Edit Then

        Dim checkGenEd As CheckBox = FormView1.FindControl("checkGenEd")
        Dim panelOutcome As Panel = FormView1.FindControl("panelOutcome")

        If checkGenEd.Checked = True Then
            panelOutcome.Visible = True
        Else
            panelOutcome.Visible = False
        End If

    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

没有任何错误,但单击复选框时没有任何反应.我认为需要某种事件来触发它,但我不知道如何将事件处理程序放在事件处理程序中.

Bri*_*ins 10

使用FormView,您必须使用find控件,如:

CheckBox checkGenEd = (CheckBox)formview1.FindControl("checkGenEd");
Panel panelOutcome = (Panel)formview1.FindControl("panelOutcome");
Run Code Online (Sandbox Code Playgroud)

您无法直接通过ID引用控件.

HTH.

  • Dim checkGenEd作为CheckBox = CType(FormView1.FindControl("checkGenEd"),CheckBox)用于vb等效转换. (2认同)