如何使用验证器控件验证GridView页脚中的文本框

本文关键字:验证 文本 GridView 何使用 控件 | 更新日期: 2023-09-27 18:06:43

谁能帮我验证一下单击按钮后GridView控件页脚内的文本框

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">

<ContentTemplate>
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
        DataKeyNames="Id" ShowFooter="true" onrowdatabound="GridView1_RowDataBound" >
        <Columns>
            <asp:TemplateField>
                <HeaderTemplate>
                    Units
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:TextBox ID="txt_Units" runat="server" Text='<%# Eval("Units") %>' ToolTip="Enter Units"></asp:TextBox>
                </ItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ReadOnly="true" Text="999999" Enabled="false" ID="txt_MaxUnits" runat="server"></asp:TextBox>
                </FooterTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <HeaderTemplate>
                    Cost
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:TextBox ID="txt_Cost" runat="server" Text='<%# Eval("Cost") %>' ></asp:TextBox>
                </ItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ID="txt_MaxCost" runat="server"></asp:TextBox>
                </FooterTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="Enter Integer Between 0 to 999998" ControlToValidate="txt_Units" ValidationExpression="^(0{0,5}[1-9]|0?[1-9][0-9]|[1-9][0-9][0-9]| [1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9])$" ValidationGroup="vld_Rows"></asp:RegularExpressionValidator>
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ErrorMessage="Enter Integer Between 0 to 999998" ControlToValidate="txt_Cost" ValidationExpression="^(0{0,5}[1-9]|0?[1-9][0-9]|[1-9][0-9][0-9]| [1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9])$" Display="Dynamic" ValidationGroup="vld_Rows"></asp:RegularExpressionValidator>
                </ItemTemplate>
                <FooterTemplate>
                   <asp:RegularExpressionValidator ID="RegularExpressionValidator3" runat="server" ErrorMessage="Enter Integer Between 0 to 999998" ControlToValidate="txt_MaxCost" ValidationExpression="^(0{0,5}[1-9]|0?[1-9][0-9]|[1-9][0-9][0-9]| [1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9])$"  ValidationGroup="vld_Rows1" ></asp:RegularExpressionValidator> 
                </FooterTemplate>
            </asp:TemplateField>
            <%--<asp:TemplateField>
                <HeaderTemplate>
                    Is Max
                </HeaderTemplate>
                <ItemTemplate>--%>
                   <%-- <asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("IsMax") %>'></asp:TextBox>--%>
                   <%-- <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("IsMax") %>' OnCheckedChanged="CheckBox1_CheckedChanged" AutoPostBack="true" />
                </ItemTemplate>
            </asp:TemplateField>--%>
        </Columns>
    </asp:GridView>
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" ValidationGroup="vld_Rows" />
    <asp:Button ID="btn_Save" runat="server" Text="Save" onclick="btn_Save_Click" ValidationGroup="vld_Rows1" />
    </ContentTemplate>
      <%--<Triggers>
    <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" runat="server" />
    <asp:AsyncPostBackTrigger ControlID="CheckBox1" EventName="CheckedChanged" runat="server" />
</Triggers>--%>
    </asp:UpdatePanel>

以上是我使用的示例代码。在点击按钮(btn_Save)时,我需要验证id为"vld_Rows1"的ValidateGroup

请提出解决方案。

提前感谢!

如何使用验证器控件验证GridView页脚中的文本框

将验证控件放在您放置控件的同一个模板中。在您的场景中,控件位于页脚模板中,因此您应该将验证控件放在页脚模板中,并尝试使用validation group。例如

 <asp:TemplateField>
      <ItemTemplate>
      </ItemTemplate>
      <FooterTemplate>
          <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><asp:RequiredFieldValidator
                        ID="RequiredFieldValidator1" runat="server" ValidationGroup="ft" ControlToValidate="TextBox3"
                        ErrorMessage="*"></asp:RequiredFieldValidator>
       </FooterTemplate>
 </asp:TemplateField>

查看以下MSDN文章:regulareexpression validator Control

摘自文章:

如果输入控件为空,则不调用验证函数验证成功。使用RequiredFieldValidator控件来防止避免用户跳过一个输入控件。

正如它所述,您将需要使用RequiredFieldValidator来确保数据已经输入。