asp.net – 使用FindControl:在窗体视图中访问控件
发布时间:2020-12-16 07:14:45 所属栏目:asp.Net 来源:网络整理
导读:我正在开发一个简单的婚礼清单应用程序,客人可以预订他们想要为新娘和新郎购买的礼物. Reserve页面在几个面板中包含几个字段,所有字段都包含在FormView中. 用户输入他们的姓名,电子邮件和他们想要保留的项目数量,页面将在数据库中进行必要的预订. 我的第一个
我正在开发一个简单的婚礼清单应用程序,客人可以预订他们想要为新娘和新郎购买的礼物. Reserve页面在几个面板中包含几个字段,所有字段都包含在FormView中.
用户输入他们的姓名,电子邮件和他们想要保留的项目数量,页面将在数据库中进行必要的预订. 我的第一个问题是在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]+@((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> 解决方法
对于第二个问题,FindControl返回一个通用控件,并且必须强制转换为特定类型的控件,以便获取对该特定控件类型属性的访问权限.
你可以在一个班轮里做,像这样: Dim Test As String = CType(Me.fvwReservation.FindControl("txtEmail"),TextBox).Text 关于你的第一个问题,我也想知道答案. 编辑 查看了一些其他StackOverflow响应(特别是this one和this one).由于FormView模板中的控件在模板是活动模板之前不存在,因此您无法在后面的代码中直接引用它们.因此,您必须在适当的事件期间使用FindControl来访问控件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET MVC 3:在发送HTTP标头后,服务器无法追加标头
- asp.net-mvc – MVC Razor HTML助手语法:Viewbag in Html.
- kendo-ui – 剑道多选控制 – 从下拉列表中删除所选项目
- asp.net-mvc – ASP.Net MVC的AntiForgeryToken方法是否与负
- asp.net-mvc-3 – 模型绑定器究竟做了什么?如何有效地使用
- 在ASP.NET 5中使用WebClient
- asp.net-mvc – 在ASP.NET MVC中的回发之间保留复杂数据
- razor-pages – 何时使用LocalRedirect与RedirectToPage
- asp.net – 从HTML帮助器中的参数获取属性
- 实体框架 – 我们如何使用Breeze的本地时区生存
推荐文章
站长推荐
热点阅读