ASP.NET 2.0数据操作教程之十九:给编辑和新增界面增加验证控件
xtBox的ID改名为 EditProductName
接下来,设置 RequiredFieldValidator的ControlToValidate属性为EditProductName。最后, 设置ErrorMessage属性为“You must provide the product’s name” 并将Text属性设置为“*”。如果设置了Text属性,那么 当验证失败的时候文本值就会被显示出来。ErrorMessage属性也是必须的,它是 为ValidationSummary准备的;当Text属性值被省略时,ErrorMessage属性也会在 无效输入时作为文本显示出来。 设置完RequiredFieldValidator的这些属 性后,屏幕应该如图7所示: 图7:设置RequiredFieldValidator控件的 ControlToValidate, ErrorMessage和Text 属性 为ProductName的EditItemTemplate增加完 RequiredFieldValidator,余下的就是为UnitPrice的EditItemplate模板增加一 些必要的验证控件。由于我们决定UnitPrice编辑时作为选填,所以并不需要 RequiredFieldValidator。不过需要增加一个CompareValidator来确保UnitPrice 有效,必须大于等于0并且时货币格式。 在为UnitPrice 的 EditItemTemplate模板增加CompareValidator之前,先将TextBox的ID改为 EditUnitPrice。然后添加CompareValidator控件并设置 ControlToValidate属性 为EditUnitPrice,ErrorMessage属性为“The price must be greater than or equal to zero and cannot include the currency symbol”, Text 属性为 “*”。 为了确保UnitPrice值必须大于等于0, 设置CompareValidator的Operator属性为GreaterThanEqual,ValueToCompare属 性为 “0”, 并且Type属性为Currency。下面的代码显示了 UnitPrice 模板列中的 EditItemTemplate调整后的样子:
这些调整之后,在浏览器里查看这个页 面。如果对product编辑时你尝试省略name或者输入一个无效的price,星号就会 显示在文本框后面。如图8显示,包含了货币符合的price,如$19.95,将被视作 无效。CompareValidator控件的Currency类型允许数字分割符(像逗号,小数点 ,取决于culture设置),以正负号开头,但是不允许货币符号。而编辑界面 UnitPrice却呈现为货币形式,这种行为可能令用户很困惑。 注意:回想 一下《Events Associated with Inserting, Updating, and Deleting 》教程, 我们设置了绑定列的DataFormatString属性为{0:c},使其格式化为货币。由于我 们将ApplyFormatInEditMode属性置为true,导致 GridView编辑界面将UnitPrice 格式化为货币格式。当绑定列转换为模板列会保留这些设置并且对TextBox的Text 属性使用绑定语法<%# Bind("UnitPrice", "{0:c}") %>进行格式化。 图8:无效输入时文本框后面显示的星号 基于如此的验证方式 ,在编辑记录时用户必须手动删除货币符号,很难让人接受。下面有三种选择进 行补救: 1. 配置EditItemTemplate使 UnitPrice不会被格式化为货币。 2. 移除CompareValidator并替换为RegularExpressi |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |