Ich entwickle eine einfache Hochzeitsliste-Anwendung, wo Gäste das Geschenk, das sie für das Brautpaar kaufen möchten, reservieren können. Die Reserveseite umschließt einige Felder innerhalb einiger Fenster, die alle in FormView eingeschlossen sind.Verwenden von FindControl: Zugriff auf Steuerelemente in einem Formview
Der Benutzer gibt seinen Namen, seine E-Mail-Adresse und die Anzahl der zu reservierenden Artikel ein, und die Seite nimmt die erforderlichen Reservierungen in der Datenbank vor.
Mein erstes Problem war, dass ich in FormView_ItemCommand konnte keine der anderen Steuerelemente in der FormView referenzieren .... Ich dachte, dies war ein Fall für FindControl - aber warum muss ich für eine Formview, wenn ich ' Nie für ListViews oder DetailViews benötigt?
Zweitens weiß ich, der folgende Code funktioniert ..
Dim oCtrl as TextBox = Me.fvwReservation.FindControl("txtEmail")
Dim Test As String = oCtrl.Text
... aber warum kann ich nicht ...
Dim Test As String = Me.fvwReservation.FindControl("txtEmail").Text
??
Schließlich glaube ich nicht, dass ich es bei dieser Gelegenheit brauche, aber ich recherchiere rekursive FindControl-Varianten, aber ich habe nicht wirklich eine gefunden, die tatsächlich kompiliert! Irgendwelche Vorschläge?
Es ist viel für einen Beitrag - danke im Voraus.
Gratuitous Code Snippet:
<asp:FormView ID="fvwReservation" runat="Server" DataSourceID="dsGift">
<ItemTemplate>
<asp:Panel runat="server" ID="pnlDetails">
<h3>Reserve Item: <%#Eval("ShortDesc")%></h3>
<p>You have chosen to reserve the <em><%#Eval("LongDesc")%></em> gift.</p>
<p>Please enter your details below to confirm the reservation.</p>
</asp:Panel>
<asp:Panel runat="server" ID="pnlConfirm">
<div class="row">
<asp:Label runat="server" CssClass="label">Name:</asp:Label><asp:TextBox ID="txtName" MaxLength="50" runat="server" CssClass="Field" />
<asp:RequiredFieldValidator ID="rfvName" runat="server" ErrorMessage="You must specify your Name" ControlToValidate="txtName" />
</div>
<div class="row">
<asp:Label runat="server" CssClass="label">Email:</asp:Label><asp:TextBox ID="txtEmail" MaxLength="100" runat="server" CssClass="Field"/>
<asp:RequiredFieldValidator ID="rfvEmail" runat="server" ErrorMessage="You must specify your Email Address" ControlToValidate="txtEmail" />
<asp:RegularExpressionValidator ID="regexEmail" ValidationExpression="^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9][email protected]((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$" runat="server" ErrorMessage="Please enter a valid Email Address" ControlToValidate="txtEmail" />
</div>
<div class="row">
<asp:Label runat="server" CssClass="label">Quantity (max <%#Eval("QtyRemaining")%>):</asp:Label><asp:TextBox ID="iQty" MaxLength="2" runat="server" CssClass="Field" />
<asp:RangeValidator ID="rvQty" runat="server" ErrorMessage="The Quantity mmust be between 1 and 10" MinimumValue="1" MaximumValue="10" ControlToValidate="iQty" />
</div>
<div class="row">
<asp:Label runat="server" CssClass="label"> </asp:Label>
<asp:Button ID="btnReserve" Text="Confirm Reservation" CommandName="Reserve" runat="server" />
</div>
</asp:Panel>
</ItemTemplate>
</asp:FormView>
Sie sehen ?! Ich wusste, dass ich etwas verpasst habe ... eigentlich bin ich mir sicher, dass ich das schon vorher gesehen habe, aber ich habe es versäumt, die Bedeutung zu erkennen ... Hab einen goldenen Stern! (gut +1 rep könnte ausreichen). – CJM