快速业务通道

用动态控件模拟复合控件(一)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-19

动态控件,复合控件,相信大家都已经很熟悉了。只要达到同样的展示及功能,用什么样的方式实现应该取决于实际情况。我在一个项目中遇到的情况是:已经有了很多页面,但每个页面都没有用Validation控件来验证输入的有效性。

为了达到相同的展示效果:

常规办法:是为每个页面的每个TextBox有选择的生成RequiredFieldValidator、RangeValidator、CompareValidator、RegularExpressionValidator、FilteredTextBoxExtender。但这个方法,需要每个页面都去添加,并且统一调整起效果来,工作量太大。

复合控件:是写一个复合控件,依参数来添加验证控件。这个也需要在页面中统一添加一次(工作量约为第一个办法的1/3),还需要更改一下后台的控件类型声明(我的后台代码在另一个程序集中)。

动态控件:写了个直接继承自TextBox的控件,在适当的地方,依参数来添加验证控件。这个也需要在页面中统一改动一下(工作量和复合控件的方法相当),不过,后台的代码不用做发改动。

前两种,大家不陌生,我就不啰嗦了。这里,只说一下用动态控件实现上面功能的方法。

先展望一下使用方法:

<!-- 必须输入 -->
<facade:StringTextBox Options="required" HelpMessage="请输入用户名" DisplayName="用户名"
runat="server" ID="StringTextBox1" MaxLength = "30" /><br />
<!-- 必须输入,只能输入数字 -->
<facade:StringTextBox Options="required,Filtered" HelpMessage="请输入用户名"
FilterType="Numbers" DisplayName="用户名" runat="server" ID="StringTextBox2" MaxLength = "30" /><br />

<!-- 必须输入,只能输入数字,数值范围是0-400 -->
<facade:NumberTextBox runat="server" ID = "tbCount" MinValue="0" MaxValue="400" DisplayName="数量"
HelpMessage="请输入数量" />
<!-- 必须输入,只能输入数字,数值范围是0-400 -->
<facade:MoneyTextBox runat="server" ID = "NumberTextBox1" MinValue="0" MaxValue="400"
DisplayName="金额" HelpMessage="请输入金额" />

<!-- 必须输入,输入的字符串必须以ABC开头 -->
<facade:RegexTextBox runat="server" Options="Required" ValidationExpression="^abc.+contentquot;
ID="tbRegex" DisplayName="正则测试" MaxLength="120" Example="abc123,abceee" HelpMessage="请输入正则测试" />
<!-- 输入的必须是手机号 -->
<facade:PhoneTextBox runat="server" ID="tbMobile" PhoneTypes="Mobile" DisplayName="手机号"
MaxLength="20" Example="13988888888" HelpMessage="请输入手机号" />
<!-- 输入的必须是手机号,或者电话 -->
<facade:PhoneTextBox runat="server" ID="tbPhoneMobile" PhoneTypes="Phone,Mobile" DisplayName="手机号"
MaxLength="20" Example="13988888888,0311-88886666" HelpMessage="请输入手机号" />

动态控件的添加,应该在Page.PreInit中添加,因为此时控件还没有加载ViewState。但控件中得不到Page.PreInit事件,我们遇到了第一个难题;

如果

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号