注册 登录
编程论坛 ASP.NET技术论坛

关于焦点离开时,customervalidator没被触发的问题?

lxd824 发布于 2007-11-08 18:57, 1789 次点击
 我在使用customervalidator验证一个用户名是否存在的时候,定义了textbox的causetovalidator为true,Controltovalide和ClientValidationFunction也都正确设置了
并在其servervalidator函数中通过查询数据库判断用户名是否存在,如果存在arg.IsValide=false; 否则为true;
但是,为什么当焦点离开该textbox,且arg.Isvalide为false 时,没有触发此验证控件,但是当点button的时候却触发了呢,有什么办法可以让焦点离开的时候触发此控件?
6 回复
#2
冰彩虹2007-11-08 23:17
帖代码...
#3
lxd8242007-11-09 08:32

代码如下:
<asp:TextBox id="userid" runat="server" MaxLength="12" CausesValidation="True"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="userid"
Display="Dynamic" EnableClientScript="true" ErrorMessage="用户已存在" OnServerValidate="CustomValidator1_ServerValidate1"
SetFocusOnError="True"></asp:CustomValidator>

protected void CustomValidator1_ServerValidate1(object source, ServerValidateEventArgs args)
{
string username = userid.Text.ToString();
string str = "select count(*) from blog_user where user_name=" + username;//这里测试过了,没问题

if (odb.sum(str) > 0)
{
args.IsValid =false;
}
else
{
args.IsValid = true;
}
}

现在给我改的不管args.IsValid是true还是false都不会出来错误信息了

[此贴子已经被作者于2007-11-9 10:37:42编辑过]

#4
lxd8242007-11-10 18:55
难道没人用过CustomValidator这个控件吗? 怎么都没人来帮忙啊? 
#5
卡卡艾2007-11-10 22:16
昏迷.
这个自定义的验证和那些判断非空什么的验证还是有区别的.
因为设计到连接到数据库,要和数据库中的值比较然后才能判断用户名是否存在.
所以只有在点了button,对服务器发出请求,才会产生验证.
你是填了一下textbox,又没有发出请求,你让它怎么响应验证啊.?

#6
卡卡艾2007-11-10 22:17
设计--&gt;涉及,打错了,不好意思.
#7
lxd8242007-11-11 01:09
但是我的textbox的causevalid=true了啊,也就是说当textbox的焦点离开的时候触发这个验证控件啊
1