2012-03-29 8 views
0

У меня есть GridView с его столбцами, которые являются TextBox и после внесения пользователем изменений в данные в GridView. У меня есть кнопка «Commit», расположенная вне GridView, а также находящаяся под другим Контентом на странице ... Как настроить Validator на работу, несмотря на то, что я правильно настроил валидатор, но когда я нажимаю кнопку «Commit», он не проверяет правильность, и я верю, потому что кнопка не находится внутри GridView или UpdatePanel ... Есть ли способ обойти это? или Лучший подход? Спасибо за вашу помощь заранее.Вызов RequiredFieldValidator и ValidatorCallExtender внутри GridView

Please select a Test from the dropdown below.<br /> 
    <asp:DropDownList ID="ddlResult" runat="server" 
     onselectedindexchanged="ddlResult_SelectedIndexChanged" 
     AutoPostBack="True" CausesValidation="false"> 
    </asp:DropDownList> 
    <br /> 
    <asp:UpdatePanel ID="upGrid" runat="server"> 
     <ContentTemplate> 
      <asp:GridView ID="grdResults" runat="server" 
         CssClass="gridview" 
         RowStyle-CssClass="gridview_itm" 
         AlternatingRowStyle-CssClass="gridview_aitm" 
         HeaderStyle-CssClass="gridview_hdr" 
         Width="100%" AutoGenerateColumns="False"> 
         <Columns> 
          <asp:TemplateField HeaderText="Test"> 
           <ItemTemplate> 
            <asp:Label ID="lblTest" runat="server" Text='<%#Eval("Test")%>'></asp:Label> 
           </ItemTemplate>                    
          </asp:TemplateField> 

          <asp:TemplateField HeaderText="Result"> 
           <ItemTemplate> 
            <asp:TextBox ID="tbResult" runat="server" Text='<%#Request.QueryString["t_ID"] == null ? null : Eval("n_Result") %>'></asp:TextBox>           
            <asp:Label ID="lblResult" runat="server" Text='<%#Eval("Validate")%>' ForeColor="#D50000"></asp:Label> 
            <asp:FilteredTextBoxExtender ID="ftbe" runat="server" TargetControlID="tbResult" FilterType="Custom, Numbers" ValidChars='<%#Eval("n_Mask")%>' /> 
            <asp:RequiredFieldValidator runat="server" ID="RReq" 
             ControlToValidate="tbResult" 
             Display="None" 
             ErrorMessage="A Result is required." /> 
            <asp:ValidatorCalloutExtender runat="Server" ID="RReqE" 
             TargetControlID="RReq" 
             HighlightCssClass="validatorCalloutHighlight" />       
           </ItemTemplate> 
          </asp:TemplateField> 

          <asp:TemplateField HeaderText="Date Completed"> 
           <ItemTemplate> 
            <asp:TextBox ID="tbDate" runat="server" Text='<%#Request.QueryString["t_ID"] == null ? null : Eval("d_DateCompleted") %>'></asp:TextBox> 
            <asp:Image ID="imgCalendar" runat="server" ImageUrl="~/App_Themes/Sugar2006/images/Calendar_scheduleHS.png" ImageAlign="Middle" /> 
            <asp:CalendarExtender ID="ce" runat="server" TargetControlID ="tbDate" PopupButtonID="imgCalendar" />   
            <asp:MaskedEditExtender ID="mex" runat="server" 
             TargetControlID="tbDate" 
             Mask="99/99/9999" 
             MaskType="Date" 
             MessageValidatorTip="true" 
             OnFocusCssClass="MaskedEditFocus" 
             OnInvalidCssClass="MaskedEditError" /> 
            <asp:MaskedEditValidator ID="mev" runat="server" 
             ControlToValidate="tbDate" 
             ControlExtender="mex" 
             Display="Dynamic" 
             InvalidValueMessage="This date is invalid!" Font-Bold="True" 
             ForeColor="#D50000" /> 
            <asp:RequiredFieldValidator runat="server" ID="DReq" 
             ControlToValidate="tbDate" 
             Display="None" 
             ErrorMessage="A Date is required." /> 
            <asp:ValidatorCalloutExtender runat="Server" ID="DReqE" 
             TargetControlID="DReq" 
             HighlightCssClass="validatorCalloutHighlight" /> 
           </ItemTemplate>             
          </asp:TemplateField>                
         </Columns>   
      </asp:GridView> 
      <br /> 
      <asp:Label ID="lblSave" runat="server" Text="**After Each Test Entry Please Save." ForeColor="#D50000"></asp:Label> 
     </ContentTemplate>   
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="ddlResult" EventName="SelectedIndexChanged" /> 
     </Triggers> 
    </asp:UpdatePanel> 

<asp:Content ID="Content1" ContentPlaceHolderID="cntSidebar" runat="server"> 
<asp:Button ID="btnSave" runat="server" Text="Save" Width="80%" 
    onclick="btnSave_Click"/> <br /> 
<asp:Button ID="btnClose" runat="server" Text="Close" Width="80%" 
    onclick="btnClose_Click" CausesValidation="false"/> 
</asp:Content> 

ответ

1

Вы пытались установить следующие свойства на кнопку Commit:

CausesValidation = "истинный" ValidationGroup = "vgMyGroup"

Кроме того, попробуйте установить проверка управления имуществом: ValidationGroup="vgMyGroup"

Еще одно предложение - сделать обратную передачу на событие щелчка кнопки фиксации и проверить на

if(Page.IsValid)... 

мне было бы интересно увидеть, если установка свойства ValidationGroup сохраняется через элементы управления содержимым ASP ..

+0

Эй Спасибо большое за ответ. На самом деле это было довольно интересно ... Я пробовал с группой проверки, и это не сработало, но поскольку я разместил if (Page.IsValid), он сделал запрос пользователю на недопустимые поля ... теперь я задаюсь вопросом, может ли это вызвать какие-либо проблемы с PostBack? –