2012-03-29 80 views
0

一個RequiredFieldValidator和ValidatorCallExtender我有它的列是文本框和後用戶的GridView內作出修改數據我所在的GridView外的「提交」按鈕,這就是與同樣位於下的頁面中不同的內容一個GridView ...我如何設置驗證工作,即使我有驗證器設置正確,但當我點擊「提交」按鈕,它不檢查驗證,我相信它是因爲按鈕不在GridView或UpdatePanel ...有沒有辦法解決這個問題?還是更好的方法? 感謝您的幫助提前。調用裏面的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

你試過在提交按鈕設置以下屬性:

的CausesValidation = 「真」 的ValidationGroup = 「vgMyGroup」

另外,嘗試設置驗證控件屬性: ValidationGroup="vgMyGroup"

另一個建議可能是做對提交按鈕的單擊事件回傳,檢查

if(Page.IsValid)... 

我很想看看是否設置ValidationGroup屬性在整個ASP內容控件仍然存在..

+0

嘿感謝很多您的回覆。其實這是非常有趣的...我已經嘗試過驗證組,並且它沒有工作,但是因爲我放置if(Page.IsValid)它確實會提示用戶輸入無效字段......現在我想知道這是否會導致任何問題回發? – 2012-03-30 14:04:15