gpt4 book ai didi

asp.net - 使用 FindControl : Accessing Controls in a Formview

转载 作者:行者123 更新时间:2023-12-04 17:59:21 25 4
gpt4 key购买 nike

我正在开发一个简单的婚礼 list 应用程序,客人可以在其中预订他们想要为新娘和新郎购买的礼物。 Reserve 页面将几个字段包装在几个面板中,所有这些字段都包装在一个 FormView 中。

用户输入他们的姓名、电子邮件和他们想要预订的项目数量,页面将在数据库中进行必要的预订。

我的第一个问题是,在 FormView_ItemCommand 中,我无法引用 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]+@((\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">&nbsp;</asp:Label>
<asp:Button ID="btnReserve" Text="Confirm Reservation" CommandName="Reserve" runat="server" />
</div>
</asp:Panel>
</ItemTemplate>
</asp:FormView>

最佳答案

对于您的第二个问题,FindControl 返回一个通用控件,并且必须强制转换为特定类型的控件才能访问该特定类型控件的属性。

您可以在一个类轮中完成,如下所示:

Dim Test As String = CType(Me.fvwReservation.FindControl("txtEmail"), TextBox).Text

关于你的第一个问题,我也很想知道答案。

编辑

查看了其他一些 StackOverflow 响应(特别是 this onethis one )。由于 FormView 模板中的控件在模板成为事件模板之前不存在,因此您不能在后面的代码中直接引用它们。因此,您必须在适当的事件期间使用 FindControl 来访问控件。

关于asp.net - 使用 FindControl : Accessing Controls in a Formview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1603947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com