繁体   English   中英

数据库中新添加或删除行的数据网格上的实时数据

[英]Live data on datagrid for newly added or deleted row in database

    public void RefreshEntities(object sender)
    {
        for (; ; )
        {
            try
            {
                //refreshing entities will not add new rows added so datagrid needs to be recreated
                if (isChanged())
                {
                    Fetch(); //Reset binding or reconstruct data grid
                    networkEntityTracker = pLCSignilinxEntities.SIGNILINX_NETWORK.ToList().Count;
                    systemEntityTracker = pLCSignilinxEntities.SIGNILINX_SYSTEM.ToList().Count;
                    tagEntityTracker = pLCSignilinxEntities.SIGNILINX_TAG.ToList().Count;
                }
                pLCSignilinxEntities.Refresh(System.Data.Objects.RefreshMode.StoreWins, pLCSignilinxEntities.SIGNILINX_NETWORK);
                pLCSignilinxEntities.Refresh(System.Data.Objects.RefreshMode.StoreWins, pLCSignilinxEntities.SIGNILINX_SYSTEM);
                pLCSignilinxEntities.Refresh(System.Data.Objects.RefreshMode.StoreWins, pLCSignilinxEntities.SIGNILINX_TAG);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Unable to refresh.");
            }
            Thread.Sleep(300);
        }
    }

我有一个从数据源中拖出的数据网格。 数据网格对应于从 SQL 数据库创建的实体数据表 model。 数据库中的表会定期更改。 所以我的程序的目标是在数据网格上显示实时数据。 我的程序运行良好,除了新的或删除的行之外,还可以显示实时数据。 当在 SQL 数据库中的表中插入新行或删除行时,数据网格不会更新该行。

上面的function就是刷新数据网格的function。 我想我必须编写 Fetch() function 来重置绑定或重建数据网格,以便为新添加的行或删除的行更新数据网格。

然后这个 function 被后台线程作为委托调用,以便每 300 毫秒刷新一次数据网格。

首先,更好的方法是使用 Threading.Timer 而不是休眠的无限循环。

http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx

或者,如果您有权访问,则可以设置 Sql 依赖项,以在每次更新、添加或删除数据时触发更改事件。 虽然对我来说这从来都不是很好,我最终只是自己动手。 但是这里有一些关于 sql 依赖的东西

http://www.dreamincode.net/forums/topic/156991-using-sqldependency-to-monitor-sql-database-changes/

然后你只需要确保你没有在 memory 中缓存任何东西,并且每次都从数据库表中重新加载数据。 如果您不想拉出所有整个表(这可能需要一段时间,具体取决于大小),您始终可以设置某种更改表,以跟踪自上次检查以来更新、添加或删除的记录和然后只需提取这些记录的数据或从 memory 中删除已删除的数据。

希望这对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM