Возникли проблемы при использовании RequiredFieldValidator с Ajax (UpdatePanel и ModalUpdateExtender) - PullRequest
0 голосов
/ 10 августа 2011
<%@ 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 не работать, я попытался использовать свойствоauseValidation.

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

но все равно не может работать.
Я даже пытался использовать validationGroup для валидатора и текстового поля, но все еще безнадежно.

Кто-нибудь может показать мне, что я сделал не так? Спасибо

1 Ответ

0 голосов
/ 10 августа 2011

Вы уверены, что валидатор является основной причиной?Я думаю, что SqlDataSource настроен неправильно ... Попробуйте выполнить следующие действия: удалите раздел DeleteParameters и добавьте атрибут OldValuesParameterFormatString к своему SqlDataSource:

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

... Предполагая, что параметры для вашей хранимой процедуры: @original_ID (и, возможно, @original_Name)

.
...