Я разрабатываю приложение для простого списка свадьбы, где гости могут зарезервировать подарок, который они хотят купить для жениха и невесты. Страница «Резерв» обертывает несколько полей внутри нескольких панелей, все они завернуты в FormView.Использование FindControl: доступ к элементам управления в виде формы
Пользователь вводит свое имя, адрес электронной почты и количество предметов, которые они хотят зарезервировать, и страница сделает необходимые бронирования в БД.
Моя первая проблема заключалась в том, что в FormView_ItemCommand я не мог ссылаться ни на один из других элементов управления в FormView .... Я полагал, что это был случай для FindControl - но зачем мне нужен Formview, когда я ' он никогда не нуждался в нем для ListViews или DetailViews?
Во-вторых, я знаю, что следующий код работает ..
Dim oCtrl as TextBox = Me.fvwReservation.FindControl("txtEmail")
Dim Test As String = oCtrl.Text
... но почему я не могу использовать ...
Dim Test As String = Me.fvwReservation.FindControl("txtEmail").Text
??
Наконец, я не думаю, что мне это нужно в этом случае, но я изучал рекурсивные варианты FindControl, но на самом деле я не нашел тот, который действительно компилируется! Какие-либо предложения?
Это много для одного сообщения - спасибо заранее.
Безвозмездный Код сниппето:
<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>
Вы видите ?! Я знал, что у меня что-то не хватает ... на самом деле, я уверен, что видел это раньше, но не осознал значения ... Имею золотую звезду! (может быть, должно хватить +1 репутации). – CJM