2012-11-05 2 views
3

의 여러 텍스트 상자와의 RequiredFieldValidator 나는ASP.NET : ListView에

<asp:ListView ....> 
    <asp:TextBox ID="txtComment" ... /> 
    <asp:RequiredFieldValidator ID="rfvComment" ControlToValidate="txtComment" ... /> 
    <act:ValidatorCalloutExtender ID="vceComment" TargetControlID="rfvComment" ... /> 

    <asp:Button ID="btnAddComment" ... /> 

</asp:ListView> 

이 목록보기 말할 수있는 목록보기 다음 만듭니다 있습니다

TextBox1에 Button1을

TextBox2를 Button2를

텍스트 상자 3 단추 3

Button2를 클릭하면 RequiredFiledValidator/ValidatorCalloutExtender가 TextBox2 대신 TextBox1에 적용됩니다. Button3을 클릭하면 RequiredFiledValidator/ValidatorCalloutExtender가 TextBox1에도 적용됩니다. RequiredFiledValidator/ValidatorCalloutExtender를 TextBox에 적용하려면 버튼을 클릭하면 Button3을 클릭하면 TextBox3에 적용됩니다.

누구나 어떻게 알 수 있습니까?

감사합니다.

같은

답변

4

사용 ValidationGroup 속성 (예, 그 작동합니다)와 동적으로 가치를 생성합니다

<script type="text/javascript"> 
    var originalValidatorUpdateDisplay = ValidatorUpdateDisplay; 
    ValidatorUpdateDisplay = function (val) { 
     originalValidatorUpdateDisplay.call(null, val); 
     var isHidden = val.style.display == "none" || val.style.visibility == "hidden"; 

     var extender = Sys.UI.Behavior.getBehaviorsByType(val, Sys.Extended.UI.ValidatorCalloutBehavior); 
     if (extender && extender.length == 1) { 
      extender = extender[0]; 
      if (isHidden) { 
       extender.hide(); 
      } 
      else { 
       extender.show(true); 
      } 
     } 
    } 
</script> 
:

<asp:TextBox runat="server" ID="TextBox1" /> 
<asp:RequiredFieldValidator runat="server" ControlToValidate="TextBox1" Text="*" 
    ValidationGroup='<%# "validationGroup_" + Container.DataItemIndex.ToString() %>' /> 
<asp:Button runat="server" Text="Click Me" ValidationGroup='<%# "validationGroup_" + Container.DataItemIndex.ToString() %>' /> 

양식의 맨 아래에 아래 스크립트를 추가합니다

툴킷 소스를 사용자 정의하는 것이 더 좋을 것이라고 생각하지만, 할 기분이 아닙니다. 이 :) 스크립트가 당신의 문제를 해결할 수 있기를 바랍니다.

+0

고마워,이 완벽하게 작동하지만 ValidatorCalloutExtender에 약간의 문제가 있습니다. Button1을 클릭하면 TextBox1 옆에 ValidatorCalloutExtender가 표시되지만 Button3을 클릭하면 ValidatorCalloutExtender가 여전히 TextBox1에 남아있어 TextBox3으로 이동하지 않습니다. –

+1

@EricBergman, 내 대답을 업데이트했습니다 –

+0

이 스크립트를 만드는 데 시간을내어 주셔서 감사합니다.하지만 시도한 후에 Extender 팝업이 나타나지 않습니다. –

0

시도에 떨어지게

<asp:Panel ID="registration" defaultbutton="regButton" runat="server"> 

<asp:TextBox ID="name" Rows="1" CssClass="text" runat="server" ValidationGroup="Registration"> 
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Enter your name please" Text="*" ControlToValidate="name" EnableClientScript="False" Display="Dynamic" ValidationGroup="Registration" /> 


<asp:TextBox ID="address" Rows="1" CssClass="text" runat="server" ValidationGroup="Registration"></asp:TextBox> 
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Enter your address please" Text="*" ControlToValidate="address" EnableClientScript="False" Display="Dynamic" ValidationGroup="Registration" /> 


<asp:ValidationSummary DisplayMode="BulletList" EnableClientScript="false" ID="validation_sum" runat="server" HeaderText="Errors list" ValidationGroup="Registration"/> 


<asp:Button runat="server" id="regButton" Text="Register please" ValidationGroup="Registration" OnClick="RegisterUser"/> 

</asp:Panel> 
+0

제안 해 주셔서 감사합니다.하지만 문제는 내가 얼마나 많은 컨트롤을 가질 지 모르겠다. 100 개의 텍스트 상자와 100 개의 버튼이 될 수 있기 때문입니다. 작동하지. –