ASP.NET VB: wie steuert den Zugriff innerhalb eines FormView aus dem code hinter?
Ich habe eine checkbox und eine Tafel im inneren eines FormView-Steuerelement, und ich brauche, um Ihnen den Zugang aus dem code hinter, in, um die Kontrollkästchen, um zu bestimmen, ob oder nicht, das Paneel ist sichtbar. Dies ist der code, den ich ursprünglich verwendet, aber seit ich die Steuerelemente innerhalb des FormView, es funktioniert nicht mehr.
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
Habe ich begonnen, um dies herauszufinden, basierend auf anderen Fragen, die ich sah, bis auf hier, aber alle von Ihnen wurden in C# statt VB, so ist dies, soweit ich habe:
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
Also ja, ich bin mir nicht sicher, wie genau es zu beenden. Tut mir Leid, das ist vielleicht ziemlich einfach, aber ich bin neu in diesem, und jede mögliche Hilfe würde geschätzt!
EDIT: hier ist mein code jetzt:
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
Es ist auch zu sagen, dass checkGenEd und panelOutcome nicht deklariert.
EDIT: änderte ich meinen code dazu, aber es funktioniert immer noch nicht:
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
Gibt es keine Fehler mehr, aber es passiert nichts wenn ich auf die checkbox. Ich denke, es muss irgendeine Art von Ereignis auslösen, aber ich weiß nicht, wie Sie können einen event-handler innerhalb eines event-handlers.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit FormView, die Sie verwenden müssen, finden Sie Kontrolle, in:
Können Sie nicht verweisen auf ein Steuerelement direkt von ID.
HTH.
In VB, die Sie benötigen, verwenden Sie
Directcast
FormView hat seine eigenen Ereignis-framework. Eine normale Kontrolle in einer FormView nicht erzeugen die postback-events, die Sie suchen. Ich habe anfangs den gleichen Fehler gemacht. Ich wollte, wie du, zu generieren, eine Art postback, die abgefangen werden könnten auf dem server. Sobald wir zurück auf den server schauen wir uns die Werte in den Checkboxen etc je nachdem, in welcher business-Regeln. Dies ist, was ich getan habe.
Zunächst legen Sie alle relevanten Steuerelemente innerhalb einer
Abschnitt innerhalb des FormView. (Es gibt auch andere Template-tags, die besser geeignet sein können). Zum generieren der postback haben eine Schaltfläche (beispielsweise) wie die unten. (Dies muss im EditItemTemplate-Bereich, als auch):
Sie abfangen kann diese auf dem server mit dem FormView ItemCommand-Ereignis. Zum Beispiel:
Sobald Sie wieder auf dem server können Sie dann beginnen, die verschiedenen Steuerelemente, um zu sehen, was Sie halten, mit findControl wenn nötig. Die Schaltfläche Befehl oben ist ein Beispiel, so möchten Sie vielleicht, um ein anderes Steuerelement.