在使用RequiredFieldValidator与Ajax (UpdatePanel和ModalUpdateExten

本文关键字:UpdatePanel ModalUpdateExten Ajax RequiredFieldValidator | 更新日期: 2023-09-27 18:04:56

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" 
     CodeBehind="Test.aspx.cs" Inherits="Pages" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
     <asp:Button ID="RegisterButton" runat="server" Text="Register" />
     <asp:ScriptManager ID="ScriptManager" runat="server">
     </asp:ScriptManager>
     <asp:Panel ID="MainPanel" runat="server" Style="display: none" CssClass="modalPopup">
          <div>
               <asp:Table ID="InputTable" runat="server">
                    <asp:TableRow>
                         <asp:TableCell>
                              <asp:Label ID="LabelName" runat="server" Text="name"></asp:Label>
                         </asp:TableCell>
                         <asp:TableCell>
                              <asp:TextBox ID="TName" runat="server"></asp:TextBox>
                         </asp:TableCell>
                         <asp:TableCell>
                              <asp:RequiredFieldValidator ID="NameRequiredFieldValidator" ControlToValidate="TName"
                                   runat="server" ErrorMessage="RequiredFieldValidator">Cannot be Empty</asp:RequiredFieldValidator>
                         </asp:TableCell>
                    </asp:TableRow>
               </asp:Table>
               <p style="text-align: center;">
                    <asp:Button ID="OkButton" runat="server" Text="OK" UseSubmitBehavior="false" OnClick="OkButton_Click" />
                    <asp:Button ID="CancelButton" runat="server" Text="Cancel" />
               </p>
          </div>
     </asp:Panel>
     <ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender" runat="server" TargetControlID="RegisterButton"
          BackgroundCssClass="modalBackground" PopupControlID="MainPanel" OkControlID="OkButton"
          OnOkScript="onOk()" CancelControlID="CancelButton" PopupDragHandleControlID="InfoPanel" />
     <asp:UpdatePanel ID="UpdatePane" runat="server">
          <ContentTemplate>
               <asp:GridView ID="GridView" runat="server" AllowPaging="True" AllowSorting="True"
                    AutoGenerateColumns="False" DataKeyNames="ProjectID" DataSourceID="DataSource"
                    Width="921px">
                    <Columns>
                         <asp:CommandField ShowDeleteButton="True" CausesValidation="false" />
                         <asp:BoundField DataField="ID" HeaderText="ProjectID" SortExpression="ProjectID"
                              ReadOnly="True" />
                         <asp:BoundField DataField="Name" HeaderText="ProjectName" SortExpression="ProjectName" />
                    </Columns>
               </asp:GridView>
               <asp:SqlDataSource ID="DataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
                    DeleteCommand="DeleteProject" DeleteCommandType="StoredProcedure">
                    <DeleteParameters>
                         <asp:Parameter Name="original_ID" Type="String" />
                         <asp:Parameter Name="original_Name" Type="String" />
                    </DeleteParameters>
               </asp:SqlDataSource>
          </ContentTemplate>
     </asp:UpdatePanel>
</asp:Content>

验证器使girdview中的删除函数无法工作,我尝试使用causeValidation属性

<asp:CommandField ShowDeleteButton="True" CausesValidation="false"/>

但它仍然不能工作。
我甚至尝试使用validationGroup作为验证器和文本字段,但仍然没有成功。

谁能告诉我我做错了什么?谢谢你

在使用RequiredFieldValidator与Ajax (UpdatePanel和ModalUpdateExten

您确定Validator是根本原因吗?我认为SqlDataSource没有正确配置…尝试以下操作:删除DeleteParameters部分并将OldValuesParameterFormatString -属性添加到SqlDataSource:

<asp:SqlDataSource [...] OldValuesParameterFormatString="original_{0}" >
</asp:SqlDataSource>

…假设存储过程的参数为@original_ID(也可能是@original_Name)