完成单表数据处理控件已经有一段时间了,今天总结一下。
定义
单表
所谓单表是指存储在数据库中的表,在进行该表数据增加、删除和修改时不影响其它表的数据增减,同时在其它表数据增减时也不影响该表数据。TableInfo
是用于生成编辑界面的表示表结构的类。在我目前所做的项目中,它的数据是单表在数据库中的系统信息(包括:表名、表的说明、列名、列的类型、列的长度等)。单表控件开发目的
完成单表数据的增、删、改、查的界面层功能,并保证与业务层使用接口进行连接,而与数据操作层隔离。即可绑定单表的数据集,提供增、删、改、查事件。可根据数据库的表结构动态生成数据的编辑界面。单表控件目前已实现的功能
- 单表控件继承自 System.Web.UI.WebControls.DataGrid,所以具有 DataGrid 控件的全部功能。
- 单表控件提供了预设的分页机制。
- 单表控件可根据接口类 TableInfo 的信息动态生成数据的编辑界面。
- 单表控件目前提供 5 种编辑控件,包括:验证文本长度的 TextBox 控件、验证数字的 TextBox 控件、仅显示数据的 Label 控件、可选择日期的日历控件、带拼音过滤功能并可接受用户输入的列表控件;可根据单表的列的不同类型生成不同的编辑控件。如:外键列可生成为带拼音过滤功能的自定义 ComboBox 控件,日期列可生成为带日期选择和农历查询功能的日期控件等。
- 编辑控件具有可扩展的能力。
- 提供获取单表控件内编辑控件的方法,并可对编辑控件进行处理,如事件绑定等。
- 数据的编辑界面中的控件均带有不同数据验证功能,验证均具有客户端与服务器的双重验证功能,并且根据 TableInfo 中的信息可保持与数据库中的表约束一致。如:列类型为 varchar 长度为 5,非空,单表控件则会生成验证非空且长度要求小于等于 5 的文本框控件。
- 提供权限设置,可根据不同权限生成不同的界面。如:只具有查询数据的权限的用户将无法使用数据的编辑功能和显示编辑界面。
- 控件提供不同的页面风格,主要有三种:仅显示数据的编辑界面、仅显示数据的 Grid 界面、同时显示数据编辑界面和 Grid 界面。
- 自动将内部信息(包括:异常信息和提示信息等)显示为 Web 下的 alert 窗口提示给用户。
单表控件的已知 Bug
- 数字验证对于小数的验证过于苛刻。如:保留 2 位小数,当只输入 1 位或不输小数部分时无法通过验证。
- 当页面风格为“同时显示数据编辑界面和 Grid 界面”时无法获取用户在编辑界面中输入的数据。
- 当使用“仅显示数据的 Grid 界面”时,没有提供数据的添加按钮,使具有权限的用户无法添加记录。虽然目前采用的是在控件外增加了添加按钮,但要对按钮的显示进行特殊处理,比较麻烦。
- 控件的一些复杂属性没有设置代码隐藏元数据,使得用户在使用了属性生成器后要手动删除控件标签中的一些属性才能正常运行。
- 当进行数据删除时,虽然提供确认删除的提示框,但并没有起作用。
- ComboBox 控件的拼音过滤功能未提供流动条。
- 当要求 ComboBox 控件不接受用户输入的数据时,验证未发生作用。
- 由于使用属性,而非事件,所以调用与业务层之间的操作接口对于用户是透明的,限制了此部分用户操作的灵活性。(此设计问题目前并不影响用户的使用,只是扩展时有些麻烦。)
单表控件下一版本的目标
- 修正已知 Bug。
- 将与业务层之间的操作改为由单表控件提供事件,通过事件参数将数据传递给业务层。
- 将目前传递给业务层的数据值的类型从 String 改为 Object,以增加控件内数据的灵活性。
- 增加控件内按钮的样式属性。
- 增加用于文件上载的编辑控件。
- 提供预定义的控件样式。
单表数据处理控件的 Grid 界面
单表数据处理控件的 Editor 界面
单表控件中的日期控件
posted on 2005-05-24 09:31 Easy Company 阅读(1004) 评论(1) 编辑 收藏 举报