如何刷新TDBGrid?

7

我有一个名为myDbGrid的TDBGrid,希望在数据库更改(插入/更新/删除)后更新该表格。如何在不重新加载整个表单的情况下实现此操作?

myDbGrid使用myDataSource,并且其数据集是myQry

我尝试了以下方法,但均未成功:

myDbGrid.Refresh;

并且

myDbGrid.DataSource.DataSet.Close;
myQry.Close; // '' I think this is redundant
myQry.Open;
myDbGrid.DataSource.DataSet.Refresh;

我错过了什么?

(请注意,数据库更改不是在tDBGrid中进行的 - 它仅用于显示)


调用myDbGrid.DataSource.DataSet.Refresh;就可以了。myDbGrid.Refresh;强制刷新网格。 - TLama
数据库中的事务可能没有被提交? - Guillem Vicens
2
这真是个愚蠢的错误...在进行数据库更改之前我刷新了页面,以至于我看不到问题的关键点。虽然我可以关闭它,但因为在Google上搜索我的问题时下一个最佳结果来自E-E.com,所以我会保留它让下一个人使用。如果TLama想要把他们的评论作为答案发布,我会马上将其标记为被接受的答案。非常感谢你们的帮助。 - BIBD
3个回答

11

这里所需的唯一代码是:

myDbGrid.DataSource.DataSet.Refresh; 

在这种特殊情况下,其他一切都是多余的。


如果更改尚未提交到数据库,该怎么办? - WeststarEric

0
你可以尝试这段代码:
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('select* from table_name');
ADOQuery.Open;

0

我正在使用ADOQuery,所以我做了:

ADOQuery1.Active := False;
ADOQuery1.Active := True;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接