设置Table
可以利用下表中的属性设置Table:
属性名 | 说明 |
AllowEdit | 是否允许用户修改表中数据 |
AllowAddNew | 是否允许用户增加行 |
AutoAddNew | 是否自动增加行 |
AllowDelete | 是否允许用户删除行 |
AllowLockRow | 是否允许用户锁定行 |
AllowUnlockRow | 是否允许用户取消锁定行 |
EnterKeyActionDown | 按回车键是否向下移到另一单元格 |
TabKeyActionDown | 按Tab键是否向下移到另一单元格 |
你也许已经留意到,上述属性DataTable也是具备的。
例如AllowEdit属性,在Table和DataTable都有,那么两者如何配合使用呢?
原则是:Table的同名属性优先。
如果Table没有设置过该属性的值,那么从DataTable继承,如果Table已经设置了该属性的值,那么以Table的设置为准。
例如在一个简单的订单管理系统中,产品表和订单表通过产品编号建立关联,客户表和订单表通过客户编号建立关联。
现在希望产品表内容只能在Tables("产品")修改,也就是只能在主表修改,不能在关联表修改,可以这样设置代码:
DataTables
("产品").AllowEdit = False由于Tables("产品")的AllowEdit属性被设置为True,所以它是可以编辑的。
其它基于DataTables("产品")的Table,例如Tables("订单.产品")、Tables("客户.订单.产品"),因为他们没有设置AllowEdit属性,所以其AllowEdit属性的值从DataTables("产品")继承,而DataTables("产品")的AllowEdit属性被设为False,所以这些Table是不能被编辑的,也就是被锁定了。
显然,只有不同的Table需要不同的设置时,才需要使用Table的设置属性,否则直接用DataTable的设置属性即可。
实际上DataTable本身是不能编辑的,因为用户根本就看不到DataTable,用户能编辑的只能是Table,所以AllowEdit属性本应该只出现在Table中,
而DataTable之所以也提供这个属性,只是为了统一设置的方便。
例如,假定不管是作为主表还是关联表,都要禁止编辑订单表,只需:
DataTables("订单").AllowEdit = False
如果DataTable没有AllowEdit属性,那么就必须逐个Table设置,代码显得繁琐很多:
Tables("订单").AllowEdit
= False
Tables("产品.订单").AllowEdit
= False
Tables("客户.订单").AllowEdit
= False
我们这里只是以AllowEdit属性为例说明,所有DataTable和Table同时具备的属性,都有和AllowEdit属性一样的作用原理。