0

グリッドビューにテキスト ボックスとボタンがあります。ボタンがクリックされると、テキストボックスに検証があります。ただし、ボタンが 2 回目にクリックされたときに検証イベントが発生することはありません。

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

edit の同じ検証が期待どおりに機能します。ただし、[挿入] ボタンは対象外です。助言がありますか?

4

2 に答える 2

1

1:ポストバックがあることを確認するためにブレークポイントを設定しましたか?サーバー側の検証はまったく呼び出されていませんか?

2:挿入のValidationGroupを編集以外のものに変更してみてください。

編集ServerSideValidationで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

于 2012-10-31T02:21:38.230 に答える
0

@TrekStir-私を正しい方向に向けてくれてありがとう。

問題は、行が追加された後にフッターを非表示にするコードがあったことでした。何らかの理由で、検証コードが起動しませんでした。フッターを非表示に設定せずに機能を実装する方法を見つけました。これで問題が解決しました。

于 2012-11-02T23:01:15.647 に答える