下午外出前,我做的锁定列,保存文件,现在我打开文件,发现原,锁定的列并不能保存,还是没有锁定.原因何在?
[此贴子已经被作者于2009-12-2 14:04:14编辑过]
以下是引用狐狸爸爸在2009-12-2 8:43:00的发言:
菜单的锁定表和锁定列是临时的
通过表属性或者列属性设置,才是永久的。
晕死,动态生成的表,不好设置表属性及列属性啊
[此贴子已经被作者于2009-12-2 10:42:31编辑过]
以下是引用狐狸爸爸在2009-12-2 10:45:00的发言:
既然是动态生成的表,就应该用代码动态设置的。
我就是用代码设置好锁定了,但是想保存下来,但是无法保存啊,总不能每次进入前都再锁定一次吧?
呵呵,不是每次都设定一次,而是每次都执行一次锁定列的代码。
就象你每次进入系统,都得重新执行代码生成SQLTable一样。
你可以在窗口的AfterLoad事件锁定列,或者在SQLTable的Fill方法后锁定列。
我做了个模板表,专门用于放置锁定列的表名及列名,然后在项目的
AfterOpenProject事件中放入以下的代码,这样每次打开项目后,就会对所有表进行查找,如找到与模板中表名和列名相同的,就锁定
For Each dt As DataTable In DataTables
For Each dc As DataCol In dt.DataCols
For Each dr As Datarow In DataTables("模板").Datarows
'Dim dr As row = Tables("模板").Current
IF dt.Name=dr("表名") AndAlso dc.Name = dr("列名") Then
dt.DataCols(dc.Name).AllowEdit = False
End If
Next
Next
Next
也可以这样,在窗口节点的事件中加入这样的代码.
For Each dc As DataCol In DataTables(Vars("表名")).DataCols
For Each dr As Datarow In DataTables("模板").Datarows
IF Vars("表名")=dr("表名") AndAlso dc.Name = dr("列名") Then
DataTables(Vars("表名")).DataCols(dc.Name).AllowEdit = False
DataTables("XC_帐套默认_Table1").DataCols(dc.Name).AllowEdit = False
End If
Next
Next
两种方法各人利弊,放在项目中,只要每次打开表执行一次便可,但是由于在所有表中查找,如果表多,那可能会影响速度,放在窗口的节点中,每次选择节点就要执行一次,好象又太频繁了,我真没想好放在何处更好,狐友帮我出出主意吧,呵呵
[此贴子已经被作者于2009-12-2 13:10:51编辑过]