在使用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作为验证器和文本字段,但仍然没有成功。
您确定Validator是根本原因吗?我认为SqlDataSource
没有正确配置…尝试以下操作:删除DeleteParameters
部分并将OldValuesParameterFormatString
-属性添加到SqlDataSource
:
<asp:SqlDataSource [...] OldValuesParameterFormatString="original_{0}" >
</asp:SqlDataSource>
…假设存储过程的参数为@original_ID
(也可能是@original_Name
)