如何使用Validator控件验证GridView Footer中的TextBox?

时间:2011-08-24 12:19:48

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

任何人都可以帮我在单击按钮

时验证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

请建议解决方案。

提前致谢!

2 个答案:

答案 0 :(得分:1)

将验证控件放在放置控件的同一模板中。在您的方案中,您的控件位于页脚模板中,因此您应将验证控件放在页脚模板中,并尝试使用validation group。 e.g。

 <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>

答案 1 :(得分:1)

查看以下MSDN文章:RegularExpressionValidator Control

来自文章:

  

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

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