2012-03-29 53 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