所以我在内容页面上有一个div标签,里面有10个文本框。他们都以txb开头,然后是一个名字,例如。 txbSubmittedBy和txbOrderEntryDate。我想循环浏览所有文本框,以检查用户是否在处理页面之前已将数据输入其中。
实现这一目标的最佳方法是什么?每个?我虽然使用With语句,但我不确定你是否可以在控件名称上进行模式匹配。我没有任何代码,因为我还没有写任何代码,因为我不知道该怎么做。
这是div的asp代码。
<div class="container-fluid" id="dataheader">
<div class="row PadLeft">
<div class="col-sm-4 headercolumns">
<asp:Label runat="server" ID="lblSubmittedBy" Text="Submitted By:" CssClass="headerlbls text-primary" />
<asp:TextBox runat="server" ID="txbSubmittedBy" CssClass="txbHeader text-danger" />
</div>
<div class="col-sm-4 headercolumns">
<asp:Label runat="server" ID="lblQarEntryDate" Text="QAR Entry Date:" CssClass="headerlbls text-primary" />
 <asp:TextBox runat="server" ID="txbQarEntryDate" CssClass="txbHeader text-danger" />
</div>
<div class="col-sm-4 headercolumns">
    <asp:Label runat="server" ID="lblJobNumber" Text="Job #:" CssClass="headerlbls text-primary" />
<asp:TextBox runat="server" ID="txbJobNumber" CssClass="txbHeader text-danger" />
</div>
</div>
<div class="row PadLeft">
<div class="col-sm-4 headercolumns PadLeft">
<asp:Label runat="server" ID="lblPoNumber" Text="PO #:" CssClass="headerlbls text-primary" />
<asp:TextBox runat="server" ID="txbPoNumber" CssClass="txbHeader text-danger" />
</div>
<div class="col-sm-4 headercolumns">
<asp:Label runat="server" ID="lblOrderEntryDate" Text="Order Entry Date:" CssClass="headerlbls text-primary" />
<asp:TextBox runat="server" ID="txbOrderEntryDate" CssClass="txbHeader text-danger" />
</div>
<div class="col-sm-4 headercolumns">
  <asp:Label runat="server" ID="lblShipDate" Text="Ship Date:" CssClass="headerlbls text-primary" />
<asp:TextBox runat="server" ID="txbShipDate" CssClass="txbHeader text-danger" />
</div>
</div>
<div class="row PadLeft">
<div class="col-sm-4 headercolumns">
   <asp:Label runat="server" ID="lblCustomerName" Text="Customer:" CssClass="headerlbls text-primary" />
<asp:TextBox runat="server" ID="txbCustomerName" CssClass="txbHeader text-danger customertxb" />
</div>
<div class="col-sm-4 headercolumns">
      <asp:Label runat="server" ID="lblStatus" Text="Status" CssClass="headerlbls text-primary" />
<asp:TextBox runat="server" ID="txbStatus" CssClass="txbHeader text-danger" />
</div>
<div class="col-sm-4 headercolumns">
<asp:Label runat="server" ID="lblSalesPerson" Text="Sales Person:" CssClass="headerlbls text-primary" />
<asp:TextBox runat="server" ID="txbSalesPerson" CssClass="txbHeader text-danger" />
</div>
</div>
<div class="row PadLeft">
<div class="col-sm-4 headercolumns"></div>
<div class="col-sm-4 headercolumns"></div>
<div class="col-sm-4 headercolumns">
<asp:Label runat="server" ID="lblRplOrderNumber" Text="Rpl Order #:" CssClass="headerlbls text-primary" ToolTip="Check to Enter Replacement Order #" />
<asp:CheckBox runat="server" ID="ckbRplOrderNumber" AutoPostBack="true" Checked="false" ToolTip="Check to Enter Replacement Order #" />
<asp:TextBox runat="server" ID="txbRplOrderNumber" CssClass="txbHeader text-danger" Visible="false" />
</div>
</div>
</div>
我正在使用vb.net代码,因此vb中的任何示例都会很棒,但如果需要,我可以转换为它。
提前致谢
答案 0 :(得分:2)
&#34;我想遍历所有文本框以检查用户是否有 在处理页面之前将数据输入到它们中。&#34;。
不要这样做,没有必要。
使用内置的ASP.NET验证控件。 RequiredFieldValidator
听起来与您的要求相关。您可以将它们放在您的aspx页面中,每个字段对应您要检查的字段,如下所示:
<asp:RequiredFieldValidator id="valSubmittedBy"
ControlToValidate="txbSubmittedBy"
Display="Static"
ErrorMessage="*"
runat="server"/>
我建议你将每一个放在标记的相关字段旁边。它们为您的字段提供自动客户端和服务器端验证。
如果您希望在一个位置显示所有验证错误,也可以在表单的某处放置ValidationSummary
控件,以方便使用。
有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/debza5t0.aspx。
答案 1 :(得分:0)
我认为使用RequiredFieldValidators可能还有很长的路要走,但这是可能的。抱歉,对于c#代码:
foreach(var c in Page.Controls)
{
if(c is TextBox)
{
var txt = c as TextBox;
if(string.IsNullOrEmpty(txt.Text)
{
//Your code here
}
}
}
如果文本框位于某个其他容器控件(例如Panel)中而不是页面本身的直接子项,则应该循环遍历该容器中的控件。