【问题标题】:How to validate TextBox Withing GridView Footer using Validator control?如何使用 Validator 控件验证带有 GridView 页脚的 TextBox?
【发布时间】:2011-08-24 12:19:48
【问题描述】:

任何人都可以帮助我在单击按钮时验证 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)后,我需要验证 ValidateGroup,id 为“vld_Rows1”

请提出解决方案。

提前致谢!

【问题讨论】:

    标签: c# .net asp.net validation gridview


    【解决方案1】:

    将验证控件放在您放置控件的同一模板中。在您的场景中,您的控件位于页脚模板中,因此您应该将验证控件放在页脚模板中,并尝试使用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>
    

    【讨论】:

    • 非常感谢! .通过使用RequiredFieldValidator 它可以工作!。让我检查一下“RegularExpressionValidator”。
    • 还有一件事,我们可以在单击按钮时验证两个验证组吗?
    • 不行,你只能有一个验证组
    【解决方案2】:

    查看以下 MSDN 文章:RegularExpressionValidator Control

    来自文章:

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

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

    【讨论】:

      猜你喜欢
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      • 2012-05-20
      • 1970-01-01
      • 2017-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多