CustomValidation不会在第二次单击时触发

时间:2012-10-31 00:03:32

标签: asp.net validation customvalidator

我有一个文本框和一个gridview中的按钮。单击按钮时,文本框会进行验证。但是,再次单击该按钮时,验证事件永远不会被触发。

<asp:GridView ID="ChapterGridView" 
               EnableSortingAndPagingCallbacks="false" 
               AllowSorting="false" 
               AllowPaging="false" 
               runat="server"                            
               AutoGenerateColumns="False" 
               CellPadding="2" 
               ForeColor="#333333"
               GridLines="None"  
               Width="780px" 
               OnRowCommand="ChapterGridView_OnRowCommand" 
               ShowFooter="False" 
               AutoGenerateDeleteButton="true"
               AutoGenerateEditButton="true"
               onrowediting="ChapterGridView_RowEditing"
               onrowdeleting="ChapterGridView_RowDeleting" 
               onrowcancelingedit="ChapterGridView_RowCancelingEdit" 
               onrowupdating="ChapterGridView_RowUpdating"
               onrowupdated="ChapterGridView_RowUpdated"
               DataKeyNames="ChapterId"
               ValidationGroup="ChapterValidation"
               Visible="true">
            <FooterStyle BackColor="#eeeeee" Font-Bold="True" ForeColor="White" />
            <Columns>
                <asp:TemplateField HeaderText="*End Page" HeaderStyle-HorizontalAlign="Left">
                    <ItemTemplate><%# Eval("EndPage")%></ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="EndPage" runat="Server" Text='<%# Eval("EndPage") %>'></asp:TextBox>
                        <asp:CustomValidator ID="TotalPagesValidator" ValidationGroup="ChapterValidation" OnServerValidate="TotalPages_ServerValidate" EnableClientScript="false" ErrorMessage="Number of pages in chapter are greater than number of pages in entire publication." Display="None" ControlToValidate="EndPage" runat="server" />
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="EndPage" runat="Server"></asp:TextBox>
                        <asp:CustomValidator ID="TotalPagesValidator2" ValidationGroup="ChapterValidation" OnServerValidate="TotalPages_ServerValidate" EnableClientScript="false" ErrorMessage="Number of pages in chapter are greater than number of pages in entire publication." Display="None" ControlToValidate="EndPage" runat="server" />

                        <asp:Button ID="btnInsert" runat="Server" Text="Insert" CommandName="Insert" UseSubmitBehavior="false" ValidationGroup="ChapterValidation" /></span>
                    </FooterTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

编辑的相同验证按预期工作。但不适用于“插入”按钮。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

1:您是否设置了断点以确保有回发?是否完全调用了服务器端验证?

2:您是否可以尝试将“插入的ValidationGroup”更改为“编辑”以外的其他内容。

编辑使用带有ServerSide验证的CustomValidator的ValidatorCallOut存在问题。

http://forums.asp.net/t/1054676.aspx

http://programminginhell.wordpress.com/2008/08/03/hello-world/

这是在jquery对话框中显示错误的另一种方式:http://weblogs.asp.net/gurusarkar/archive/2011/03/28/part-3-showing-asp-net-server-side-messages-in-a-custom-dialog-server-side-with-asp-net-ajax.aspx

答案 1 :(得分:0)

@TrekStir - 感谢您指出我正确的方向。

问题是有一些代码可以在添加行后使页脚不可见。由于某些原因导致验证代码无法触发。我找到了一种实现功能的方法,而没有将页脚设置为不可见,这解决了这个问题。