Estoy desarrollando una aplicación simple de Lista de bodas, donde los invitados pueden reservar el regalo que desean comprar para la novia y el novio. La página Reservar envuelve unos pocos campos dentro de un par de paneles, todos envueltos dentro de un FormView.Uso de FindControl: Acceso a los controles en una vista de formulario
El usuario introduce su nombre, correo electrónico y la cantidad de elementos que desea reservar, y la página hará las reservas necesarias en la base de datos.
Mi primer problema fue que en FormView_ItemCommand, no pude hacer referencia a ninguno de los otros controles en el FormView ... Supuse que este era un caso para FindControl, pero ¿por qué necesito un Formview cuando lo hago? ¿Nunca lo necesité para ListViews o DetailViews?
En segundo lugar, sé que funciona el siguiente código ..
Dim oCtrl as TextBox = Me.fvwReservation.FindControl("txtEmail")
Dim Test As String = oCtrl.Text
... pero por qué no puedo usar ...
Dim Test As String = Me.fvwReservation.FindControl("txtEmail").Text
??
Finalmente, no creo que lo necesite en esta ocasión, pero he estado buscando variantes recursivas de FindControl, ¡pero en realidad no he encontrado uno que realmente compila! ¿Alguna sugerencia?
Es mucho para una publicación, gracias de antemano.
Gratuitous Fragmento de código:
<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>
Ves ?! Sabía que me estaba perdiendo algo ... en realidad, estoy seguro de haberlo visto antes, pero no me di cuenta del significado ... ¡Ten una estrella de oro! (bien +1 representante podría ser suficiente). – CJM