2011-05-04 5 views
0

내 checkboxlist에 유효성 검사를 구현하는 방법을 알 수 있습니까? 유효성 검사는 Chechbox가 Chekbox인지 확인해야하며 그렇지 않은 경우 유효성 검사 오류가 발생해야합니다. CustomValidator 컨트롤을 사용할 수 있습니다CheckboxList에 대한 유효성 검사

 <asp:CheckBoxList runat="server" ID="chRoles"> 
     <asp:ListItem Text="role1" Value="role1" /> 
     <asp:ListItem Text="role2" Value="role2" /> 
     <asp:ListItem Text="role3" Value="role3" /> 
     <asp:ListItem Text="role4" Value="role4" /> 
     <asp:ListItem Text="role5" Value="role5" /> 
     <asp:ListItem Text="role6" Value="role6" /> 
     </asp:CheckBoxList> 
+0

가능한 중복 - 사용자가 적어도 하나를 선택 유효성 검사 확인란] (http://stackoverflow.com/questions/1146234/asp-net-checkboxlist-validate-user-chooses-at-least-one-checkbox) – RPM1984

답변

1

나는 checkBoxList 확인을 위해 사용자 정의 클래스를 만들었습니다

가 여기 내 사용자 정의 클래스 코드입니다.

namespace Custom.Validators 
{ 
    public class RFVCBoxList : BaseValidator 
    { 
     private const string SCRIPTBLOCK = "RFV4CL"; 

     protected override bool ControlPropertiesValid() 
     { 
      Control ctrl = FindControl(ControlToValidate); 
      if (ctrl != null) 
      { 
       CheckBoxList _listctrl = (CheckBoxList)ctrl; 
       return (_listctrl != null); 
      } 
      else 
       return false; 
     } 

     protected override bool EvaluateIsValid() 
     { 
      return EvaluateIsChecked(); 
     } 

     protected override void OnPreRender(EventArgs e) 
     { 
      base.OnPreRender(e); 
      if (EnableClientScript) { this.ClientScript(); } 

     } 

     private void ClientScript() 
     { 
      StringBuilder sb_Script = new StringBuilder(); 
      sb_Script.Append("<script language=\"javascript\">"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("function cb_verify(sender) {"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("var val = document.getElementById(document.getElementById(sender.id).controltovalidate);"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("var col = val.getElementsByTagName(\"*\");"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("if (col != null) {"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("for (i = 0; i < col.length; i++) {"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("if (col.item(i).tagName == \"INPUT\") {"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("if (col.item(i).checked) {"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("return true;"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("}"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("}"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("}"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("return false;"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("}"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("}"); 
      sb_Script.Append("\r"); 
      sb_Script.Append("</script>"); 
      Page.ClientScript.RegisterClientScriptBlock(GetType(), SCRIPTBLOCK, sb_Script.ToString()); 
      Page.ClientScript.RegisterExpandoAttribute(ClientID, "evaluationfunction", "cb_verify"); 
     } 


     private bool EvaluateIsChecked() 
     { 
      CheckBoxList _cbl = ((CheckBoxList)FindControl(ControlToValidate)); 
      foreach (ListItem li in _cbl.Items) 
      { 
       if (li.Selected) 
       { 
        return true; 
       } 
      } 
      return false; 
     } 
     public RFVCBoxList() 
     { 
      // 
      // TODO: Add constructor logic here 
      // 
     } 
    } 
} 

당신은 당신이

<CC1:RFVCBoxList ID="rfvContactType" runat="server" ControlToValidate="chkContactType" 
Display="None" ErrorMessage="Please select contact type" SetFocusOnError="True" 
ValidationGroup="Photographer"></CC1:RFVCBoxList> 

가 당신을 위해 도움이 될 것입니다 희망 평소

등의 검증을 설정할 수 있습니다 그 후
<%@ Register TagPrefix="CC1" Namespace="Custom.Validators" %> 

로 같은 페이지에서 사용자 정의 클래스를 등록 할 수 있습니다.

0

사용 : 이 내 코드입니다.

관련 문제