这个验证功能如何改善??
在FormView的编辑模板中,有个控件ContractNumberTextBox(合同号),该控件绑定了SQL数据库中的ContractNumber,而ContractNumber是不能重复的。因此,我需要给ContractNumberTextBox加上一个验证控件CustomValidator_ContractNumber来验证ContractNumber是否重复。
每次点击编辑,就会通过Text='<%# Bind("ContractNumber") %>',先让ContractNumberTextBox呈现它的值。
当ContractNumberTextBox中的“合同号”写个新的值并且SQL中不存在,验证一切正常。
但现在遇到一个特殊的情况,如果开始呈现出来的“合同号”我不做改变,即时这个合同号在SQL中也是唯一的,验证控件也会提示“该合同号已存在”。
要怎么解决这个问题呢?其实就是要添加一个判断:如果ContractNumberTextBox的值重新输入了,就要验证;没改变就不用验证!
----------------------------前台--------------------------
<asp:CustomValidator ID="CustomValidator_ContractNumber" runat="server"
ErrorMessage="合同号已存在" Font-Size="10px"
onservervalidate="CustomValidator_ContractNumber_ServerValidate"></asp:CustomValidator>
protected void CustomValidator_ContractNumber_ServerValidate(object source, ServerValidateEventArgs args)
{
DataClassesDataContext db = new DataClassesDataContext();
ContractTable mypt;
args.IsValid = false;
try//多个参数同时判定的写法!!!
{
mypt = db.ContractTable.Where(c => c.ContractNumber == ((TextBox)this.FormView1.FindControl("ContractNumberTextBox")).Text).First();
}
catch
{
args.IsValid = true;
}
}