验证控件分组验证
关键字:
Page_ClientValidate,CausesValidation,ValidationGroup
使用描述:
一个新建的页面,可以新建三个数据对象A,B,C;每个数据对象有一些字段;现有2种组合:(1)A+B+C;(2)A;具体用哪种组合由页面的DropDownList控件的选择决定:只新建A时,将B和C所在div隐藏。
现在问题来了:隐藏B和C数据对象,相应的数据验证控件如:RequiredFieldValidator提示不能为空。
解决办法是:将验证控件进行分组。
大概实现过程如下:
1,给验证控件添加属性:ValidationGroup=”vgA”(组名随便写)
2,修改保存按钮的属性:CausesValidation=false
3, 给保存按钮添加OnClientClick= ValidateByGruop()
代码如下:
function ValidateByGruop ()
{
var retval=false ;
var val = $('#<%=下拉列表控件ID.ClientID %> option:selected').val();
if(val == 1)
{
//只验证交采必须项
retval= Page_ClientValidate("mustValidate");
}
else
{
//验证所有项
retval= Page_ClientValidate();
}
return retval ;
}
4,如果要使用 ValidationSummary 控件来显示汇总的验证信息,设置其ValidationGroup=”组名”即可
补充说明;
1,Page_ClientValidate方法
Page_ClientValidate(validationGroup)
参数为ValidationGroup属性的值。没有指定参数的情况下表示触发页面所有的Validator控件。
返回值是布尔值(true:验证通过, false:验证失败)。
2,在一个含有RequiredFieldValidator控件的页面上,RequiredFieldValidator控件发送到客户端后生成一些javascript函数,CausesValidation="True"的Button只比CausesValidation="False"的Button多了一些javascript代码
参考博客:http://www.cnblogs.com/kkding/archive/2005/07/11/DataValidator.html