CheckBoxList的验证

 

页面上有个CheckBoxList控件,用户必须选一个选项才能提交,现有的asp.net验证控件还不能验证CheckBoxList,怎么办?

1.新建CheckBoxListRequiredFieldValidator类,继承BaseValidator

namespace WebApplication2

{

    public class CheckBoxListRequiredFieldValidator : BaseValidator

     {

        protected override bool ControlPropertiesValid()

         {

            return true;

         }

        protected override bool EvaluateIsValid()

         {

            return EvaluateIsChecked();

         }

        protected bool EvaluateIsChecked()

         {

             CheckBoxList _cbl = ((CheckBoxList)FindControl(ControlToValidate));

            foreach (ListItem li in _cbl.Items)

             {

                if (li.Selected == true)

                 {

                    return true;

                 }

             }

            return false;

         }

        protected override void OnPreRender(EventArgs e)

         {

            if (EnableClientScript)

             {

                 ClientScript();

             }

            base.OnPreRender(e);

         }

        protected void ClientScript()

         {

             Attributes["evaluationfunction"] = "cb_vefify";

             StringBuilder sb_Script = new StringBuilder();

             sb_Script.Append("<script language=/"javascript/">");

             sb_Script.Append("/r");

             sb_Script.Append("/r");

             sb_Script.Append("function cb_vefify(val) {");

             sb_Script.Append("/r");

             sb_Script.Append("var val = document.all[document.all[/"");

             sb_Script.Append(ID);

             sb_Script.Append("/"].controltovalidate];");

             sb_Script.Append("/r");

             sb_Script.Append("var col = val.all;");

             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(), "RBLScript", sb_Script.ToString(), false);

         }

     }

}

2.编译生成dll

页面使用

<%@ Register   TagPrefix="myCheckBoxList" Namespace="WebApplication2" Assembly="WebApplication2" %>

       <asp:CheckBoxList ID="chkTest" runat="server" Width="132px">

            <asp:ListItem>1</asp:ListItem>

            <asp:ListItem>2</asp:ListItem>

            <asp:ListItem>3</asp:ListItem>

            <asp:ListItem>4</asp:ListItem>

            <asp:ListItem>5</asp:ListItem>

            <asp:ListItem>6</asp:ListItem>

            <asp:ListItem>7</asp:ListItem>

        </asp:CheckBoxList>

            <myCheckBoxList:CheckBoxListRequiredFieldValidator ID="valMessage"

             ControlToValidate="chkTest" RUNAT="SERVER"

             EnableClientScript="true" ErrorMessage="你必须选择一个选项">

               *

       </myCheckBoxList:CheckBoxListRequiredFieldValidator>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值