GridControl刷新

时间:2012-05-25 18:29:03

标签: records visual-foxpro gridcontrol

我在表单上的vfp9中有一个网格控件。我有一个按钮删除(带包)当前记录。删除记录后,网格找不到资源。它仍然只是一个空矩形。 我做了这样的事情: DELETE ALL PACK GO TOP thisform.grid1.Refresh

,但没有效果。提前谢谢。

3 个答案:

答案 0 :(得分:1)

问题是你正在重新创建网格的RecordSource并且它不喜欢它。如果不了解您正在做的事情,很难提供具体的建议。但是,在正常的应用程序活动中打包表通常被认为是不好的形式。通常,PACK保留用于在非工作时间运行的管理代码,因为它需要对表进行独占访问。

你的目标是什么?为什么要删除网格所基于的表中的所有记录?

答案 1 :(得分:1)

正如塔玛所说......在日常活动中包装非常糟糕。但是,有一个“设置”可以通过所有正常操作“隐藏”记录,直到夜间处理的管理任务,以永久删除记录......

SET DELETED ON
SET DELETED OFF

通过“打开”(并且只需要为整个应用程序执行一次,除非您正在处理处理私有数据会话的表单,那么它也需要在那里完成.SET DELETED ON告诉VFP要HIDE任何标记为删除的记录,因此它们不会使屏幕混乱。它也会使它们不受任何类型的SQL查询的影响,因此您不会将记录标记为删除。

通过SET DELETED OFF,将关闭隐藏,并允许您再次查看任何/所有已删除的记录。如果您不小心将记录标记为删除并需要“重新调用”它(取消删除)。

现在,所有这一切。如果您将记录标记为删除,例如在找到条件后设置过滤器,请执行全部删除,打包,这是不好的...

按钮的点击事件所需要的只是

DELETE
Thisform.YourGridObject.Refresh()

并且应该从列表中直观地删除记录。当您发出PACK时,它实际上会关闭表,从而从网格中取消绑定,删除所有已删除的记录,然后通过已清理的版本重新打开自身,但不会自动将其自身重新绑定到网格。

答案 2 :(得分:1)

VFP网格讨厌被修改的记录源。

您需要断开网格记录源(即将其设置为“”),执行操作,然后重置记录源并刷新。