循环浏览div中文本框的最佳方法,以查看是否有数据

时间:2018-01-18 15:40:59

标签: asp.net vb.net

所以我在内容页面上有一个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" />
                &ensp;<asp:TextBox runat="server" ID="txbQarEntryDate" CssClass="txbHeader text-danger" />
           </div>
            <div class="col-sm-4 headercolumns">
                &emsp;&emsp;&emsp;&ensp;<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"  />
                &nbsp;<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">
                &emsp;&ensp;<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">
                &emsp;&ensp;&nbsp;<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">
                &emsp;&emsp;&emsp;&emsp;&emsp;&ensp;<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中的任何示例都会很棒,但如果需要,我可以转换为它。

提前致谢

2 个答案:

答案 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)中而不是页面本身的直接子项,则应该循环遍历该容器中的控件。