在项目开发中,我们经常习惯性的按照CS的习惯去思考BS的功能,比如:在某个页面中有下拉框是相互关联的,在某个下拉框选择后,我们希望看到相关其他控件做相应变化,并根据验证条件做出相应动作,那么在BS结构的WEBFORM中是如何做到的呢?实际上这是一个动态关联及验证问题。方法如下:
一、建好aspx页面,并设置相应属性
二、创建关键字段js动态验证代码
三、分别为相关控件设计数据变化事件
重点:SetIsValid(true):为某控件设置验证成功
SetIsValid(false);为某控件设置验证失败并显示警告图标
ErrorMode=ImageWithToolTip:只显示警告图标,仅在鼠标放上去时才会显示提示文字
ErrorMode=ImageWithText:显示警告图标和文字
SetEnabeld(true):使用某元素有效,注意此命令会导致isValid=true恢复默认值,也就是说在需要设置SetEnabeld(true)时,要考虑此时元素的isValid应该是个什么值,我在项目设计时就遇到了这种情况,前面本来是isValid=false,不知怎么回事,后面就自己变成了isValid=true,调试了半天发现当使用了SetEnabeld(true)时,isValid会自动改为true。所以请大家注意这一点!
如果isValid=true时表示验证成功,不会显示警告图标 ,也就是说,如果想显示警告图标,前提条件是isValid=false,想不显示警告图标,前提条件是isValid=true,所以在js代码中如果验证条件通过,就要使某元素的SetIsValid(true),就不会显示警告图标,如果验证条件未通过,就要使用某元素的SetIsValid(false),就会显示警告图标。分析这里大家就会明白,做动态验证的关键在于设置SetIsValid属性。不说了上代码。
aspx页面部分代码:
(略)
<td class="auto-style7">
<dx:ASPxLabel ID="ASPxLabel14" runat="server" Text="回传件号码" Theme="Aqua" >
</dx:ASPxLabel>
</td>
<td class="auto-style8">
<dx:ASPxTextBox ID="hcjhm" ClientInstanceName="hcjhm" EnableClientSideAPI="true" runat="server" Theme="Aqua" ReadOnly="false" Text='<%# Bind("回传件号码") %>' Value='<%# Bind("回传件号码") %>' ClientSideEvents-TextChanged="function(s,e){hcjhm_onTextChanged(s, e);}">
<ValidationSettings validateonleave="False" EnableCustomValidation="true" ErrorDisplayMode="ImageWithTooltip">
<RequiredField ErrorText="" />
</ValidationSettings>
</dx:ASPxTextBox>
</td>
(略)
注意:这一行代码在相关控件元素设置中要有,因为SetIsValid属性需要其他属性的配合,没有这些属性,SetIsValid可能会失效不起作用。这也是DEV很无奈的地方。其实有好多属性是相互关联的,常用DEV做设计的程序猿们都明白这一点!
js代码:
//文档签订日期变化事件
function wdqdrq_onDataChanged(s,e)
{
if(wjsx_str=="有")
{
if(wdqdrq.GetText()==null||wdqdrq.GetText()=="")
{
wdqdrq.SetIsValid(false);
}
else
{
wdqdrq.SetIsValid(true);
}
}
if(wjsx_str=="无")
{
if (wdqdrq.GetText() != null||wdqdrq.GetText() !="") {
wdqdrq.SetIsValid(false);
}
else
{
wdqdrq.SetIsValid(true);
}
}
}
//文件有效起变化事件
function wjyxq_onDataChanged(s, e) {
if (wjsx_str == "有") {
if (wjyxq.GetText() == null || wjyxq.GetText() == "") {
wjyxq.SetIsValid(false);
}
else {
wjyxq.SetIsValid(true);
}
}
if (wjsx_str == "无") {
if (wjyxq.GetText() != null || wjyxq.GetText() != "") {
wjyxq.SetIsValid(false);
}
else {
wjyxq.SetIsValid(true);
}
}
}
//文件有效止变化事件
function wjyxz_onDataChanged(s, e) {
if (wjsx_str == "有") {
if (wjyxz.GetText() == null || wjyxz.GetText() == "") {
wjyxz.SetIsValid(false);
}
else {
wjyxz.SetIsValid(true);
}
}
if (wjsx_str == "无") {
if (wjyxz.GetText() != null || wjyxz.GetText() != "") {
wjyxz.SetIsValid(false);
}
else {
wjyxz.SetIsValid(true);
}
}
}
//终止标记变化事件
function zzbj_onSelectedIndexChanged(s, e){
if (wjsx_str == "有") {
if (zzbj.GetText() == null || zzbj.GetText() == "") {
zzbj.SetIsValid(false);
}
else {
zzbj.SetIsValid(true);
}
}
if (wjsx_str == "无") {
if (zzbj.GetText() != null || zzbj.GetText() != "") {
zzbj.SetIsValid(false);
}
else {
zzbj.SetIsValid(true);
}
}
}
//受理法院变化事件
function slfy_onSelectedIndexChanged(s, e) {
if (wjsx_str == "有") {
if (slfy.GetText() == null || slfy.GetText() == "") {
slfy.SetIsValid(false);
}
else {
slfy.SetIsValid(true);
}
}
if (wjsx_str == "无") {
if (slfy.GetText() != null || slfy.GetText() != "") {
slfy.SetIsValid(false);
}
else {
slfy.SetIsValid(true);
}
}
}
//回传方式变化事件
function hcfs_onSelectedIndexChanged(s, e) {
if (wjsx_str == "有") {
if (hcfs.GetText() == null || hcfs.GetText() == "") {
hcfs.SetIsValid(false);
}
else {
hcfs.SetIsValid(true);
}
}
if (wjsx_str == "无") {
if (hcfs.GetText() != null || hcfs.GetText() != "") {
hcfs.SetIsValid(false);
}
else {
hcfs.SetIsValid(true);
}
}
}
//回传件号码变化事件
function hcjhm_onTextChanged(s, e) {
if (wjsx_str == "有") {
if (hcjhm.GetText() == null || hcjhm.GetText() == "") {
hcjhm.SetIsValid(false);
}
else {
hcjhm.SetIsValid(true);
}
}
if (wjsx_str == "无") {
if (hcjhm.GetText() != null || hcjhm.GetText() != "") {
hcjhm.SetIsValid(false);
}
else {
hcjhm.SetIsValid(true);
}
}
}
function Validate(s,e) {
if (e.value == "无")
{
if (wdqdrq.GetText().trim() != "") {
wdqdrq.errorText = "必为空!";
wdqdrq.SetIsValid(false);
}
else {
wdqdrq.SetIsValid(true);
}
if (wjyxq.GetText().trim() != "") {
wjyxq.errorText = "必为空!";
wjyxq.SetIsValid(false);
}
else {
wjyxq.SetIsValid(true);
}
if (wjyxz.GetText().trim() != "") {
wjyxz.errorText = "必为空!";
wjyxz.SetIsValid(false);
}
else {
wjyxz.SetIsValid(true);
}
if (zzbj.GetText().trim() != "") {
zzbj.errorText = "必为空!";
zzbj.SetIsValid(false);
}
else {
zzbj.SetIsValid(true);
}
if (slfy.GetText().trim() != "") {
slfy.errorText = "必为空!";
slfy.SetIsValid(false);
}
else {
slfy.SetIsValid(true);
}
if (hcfs.GetText().trim() != "") {
hcfs.errorText = "必为空!";
hcfs.SetIsValid(false);
}
else {
hcfs.SetIsValid(true);
}
if (hcjhm.GetText().trim() != "") {
hcjhm.errorText = "必为空!";
hcjhm.SetIsValid(false);
}
else {
hcjhm.SetIsValid(true);
}
}
else
{
if (wdqdrq.GetText().trim() == "") {
wdqdrq.errorText = "必填!";
wdqdrq.SetIsValid(false);
}
else {
wdqdrq.SetIsValid(true);
}
if (wjyxq.GetText().trim() == "") {
wjyxq.errorText = "必填!";
wjyxq.SetIsValid(false);
}
else {
wjyxq.SetIsValid(true);
}
if (wjyxz.GetText().trim()== "") {
wjyxz.errorText = "必填!";
wjyxz.SetIsValid(false);
}
else {
wjyxz.SetIsValid(true);
}
if (zzbj.GetText().trim() == "") {
zzbj.errorText = "必填!";
zzbj.SetIsValid(false);
}
else {
zzbj.SetIsValid(true);
}
if (slfy.GetText().trim() == "") {
slfy.errorText = "必填!";
slfy.SetIsValid(false);
}
else {
slfy.SetIsValid(true);
}
if (hcfs.GetText().trim() == "") {
hcfs.errorText = "必填!";
hcfs.SetIsValid(false);
}
else {
hcfs.SetIsValid(true);
}
if (hcjhm.GetText().trim() == "") {
hcjhm.errorText = "必填!";
hcjhm.SetIsValid(false);
}
else {
hcjhm.SetIsValid(true);
}
}
}
function btn_cancel()
{
wdtpzb_grd.CancelEdit();
}
function btn_update()
{
wdtpzb_grd.UpdateEdit();
}
function wjsx_Init(s, e) {
if (wjsx.GetText().trim() == "无") {
wdqdrq.SetEnabled(false);
wjyxq.SetEnabled(false);
wjyxz.SetEnabled(false);
zzbj.SetEnabled(false);
slfy.SetEnabled(false);
hcfs.SetEnabled(false);
hcjhm.SetEnabled(false);
//注意:SetEnabled(false)会改变isValid为false,所以在改变了SetEnabled(false)时,应根据值再次设定isValid的值
if (wdqdrq.GetText().trim() != "") {
wdqdrq.errorText = "必为空!";
wdqdrq.SetIsValid(false);
}
else {
wdqdrq.SetIsValid(true);
}
if (wjyxq.GetText().trim() != "") {
wjyxq.errorText = "必为空!";
wjyxq.SetIsValid(false);
}
else {
wjyxq.SetIsValid(true);
}
if (wjyxz.GetText().trim() != "") {
wjyxz.errorText = "必为空!";
wjyxz.SetIsValid(false);
}
else {
wjyxz.SetIsValid(true);
}
if (zzbj.GetText().trim() != "") {
zzbj.errorText = "必为空!";
zzbj.SetIsValid(false);
}
else {
zzbj.SetIsValid(true);
}
if (slfy.GetText().trim() != "") {
slfy.errorText = "必为空!";
slfy.SetIsValid(false);
}
else {
slfy.SetIsValid(true);
}
if (hcfs.GetText().trim() != "") {
hcfs.errorText = "必为空!";
hcfs.SetIsValid(false);
}
else {
hcfs.SetIsValid(true);
}
if (hcjhm.GetText().trim() != "") {
hcjhm.errorText = "必为空!";
hcjhm.SetIsValid(false);
}
else {
hcjhm.SetIsValid(true);
}
}
if(wjsx.GetText().trim() == "有")
{
wdqdrq.SetEnabled(true);
wjyxq.SetEnabled(true);
wjyxz.SetEnabled(true);
zzbj.SetEnabled(true);
slfy.SetEnabled(true);
hcfs.SetEnabled(true);
hcjhm.SetEnabled(true);
//注意:SetEnabled(true)会改变isValid为true,所以在改变了SetEnabled(true)时,应根据值再次设定isValid的值
if (wdqdrq.GetText().trim() == "") {
wdqdrq.errorText = "必填!";
wdqdrq.SetIsValid(false);
}
else {
wdqdrq.SetIsValid(true);
}
if (wjyxq.GetText().trim() == "") {
wjyxq.errorText = "必填!";
wjyxq.SetIsValid(false);
}
else {
wjyxq.SetIsValid(true);
}
if (wjyxz.GetText().trim() == "") {
wjyxz.errorText = "必填!";
wjyxz.SetIsValid(false);
}
else {
wjyxz.SetIsValid(true);
}
if (zzbj.GetText().trim() == "") {
zzbj.errorText = "必填!";
zzbj.SetIsValid(false);
}
else {
zzbj.SetIsValid(true);
}
if (slfy.GetText().trim() == "") {
slfy.errorText = "必填!";
slfy.SetIsValid(false);
}
else {
slfy.SetIsValid(true);
}
if (hcfs.GetText().trim() == "") {
hcfs.errorText = "必填!";
hcfs.SetIsValid(false);
}
else {
hcfs.SetIsValid(true);
}
if (hcjhm.GetText().trim() == "") {
hcjhm.errorText = "必填!";
hcjhm.SetIsValid(false);
}
else {
hcjhm.SetIsValid(true);
}
}
}
var wjsx_str = "";//全局变量:文件时间选择结果
function wjsx_selectChanging(s, e) {
wjsx_str = wjsx.GetText().trim();
if (wjsx.GetText().trim() == "无") {
wdqdrq.SetValue(null);
wjyxq.SetValue(null);
wjyxz.SetValue(null);
zzbj.SetValue("");
slfy.SetValue("");
hcfs.SetValue("");
hcjhm.SetValue("");
wdqdrq.SetEnabled(false);
wjyxq.SetEnabled(false);
wjyxz.SetEnabled(false);
zzbj.SetEnabled(false);
slfy.SetEnabled(false);
hcfs.SetEnabled(false);
hcjhm.SetEnabled(false);
//注意:SetEnabled(false)会改变isValid为false,所以在改变了SetEnabled(false)时,应根据值再次设定isValid的值
if (wdqdrq.GetText().trim() != "") {
wdqdrq.errorText = "必为空!";
wdqdrq.SetIsValid(false);
}
else {
wdqdrq.SetIsValid(true);
}
if (wjyxq.GetText().trim() != "") {
wjyxq.errorText = "必为空!";
wjyxq.SetIsValid(false);
}
else {
wjyxq.SetIsValid(true);
}
if (wjyxz.GetText().trim() != "") {
wjyxz.errorText = "必为空!";
wjyxz.SetIsValid(false);
}
else {
wjyxz.SetIsValid(true);
}
if (zzbj.GetText().trim() != "") {
zzbj.errorText = "必为空!";
zzbj.SetIsValid(false);
}
else {
zzbj.SetIsValid(true);
}
if (slfy.GetText().trim() != "") {
slfy.errorText = "必为空!";
slfy.SetIsValid(false);
}
else {
slfy.SetIsValid(true);
}
if (hcfs.GetText().trim() != "") {
hcfs.errorText = "必为空!";
hcfs.SetIsValid(false);
}
else {
hcfs.SetIsValid(true);
}
if (hcjhm.GetText().trim() != "") {
hcjhm.errorText = "必为空!";
hcjhm.SetIsValid(false);
}
else {
hcjhm.SetIsValid(true);
}
}
else {
wdqdrq.SetEnabled(true);
wjyxq.SetEnabled(true);
wjyxz.SetEnabled(true);
zzbj.SetEnabled(true);
slfy.SetEnabled(true);
hcfs.SetEnabled(true);
hcjhm.SetEnabled(true);
//注意:SetEnabled(true)会改变isValid为true,所以在改变了SetEnabled(true)时,应根据值再次设定isValid的值
if (wdqdrq.GetText().trim() == "") {
wdqdrq.errorText = "必填!";
wdqdrq.SetIsValid(false);
}
else {
wdqdrq.SetIsValid(true);
}
if (wjyxq.GetText().trim() == "") {
wjyxq.errorText = "必填!";
wjyxq.SetIsValid(false);
}
else {
wjyxq.SetIsValid(true);
}
if (wjyxz.GetText().trim() == "") {
wjyxz.errorText = "必填!";
wjyxz.SetIsValid(false);
}
else {
wjyxz.SetIsValid(true);
}
if (zzbj.GetText().trim() == "") {
zzbj.errorText = "必填!";
zzbj.SetIsValid(false);
}
else {
zzbj.SetIsValid(true);
}
if (slfy.GetText().trim() == "") {
slfy.errorText = "必填!";
slfy.SetIsValid(false);
}
else {
slfy.SetIsValid(true);
}
if (hcfs.GetText().trim() == "") {
hcfs.errorText = "必填!";
hcfs.SetIsValid(false);
}
else {
hcfs.SetIsValid(true);
}
if (hcjhm.GetText().trim() == "") {
hcjhm.errorText = "必填!";
hcjhm.SetIsValid(false);
}
else {
hcjhm.SetIsValid(true);
}
}
}