DataGridView使用虚拟模式实时显示数据表

2024-01-12

我有一个 DataGridView,它将显示数据库中的记录(日志条目)。一次可以存在的记录量非常大。我想使用 DataGridView 的虚拟模式功能来显示数据页,并最大限度地减少给定时间必须通过网络传输的数据量。

轮询数据是不可能的。一次将有多个客户端运行,所有客户端都位于同一网络上并查看记录。如果它们都轮询数据,网络将运行非常慢。

数据对用户来说是只读的;他们无法编辑任何内容,只能查看。我需要知道数据库中何时发生更新,并且我需要使用虚拟模式相应地使用这些更新来更新屏幕。如果用户正在查看的数据页面包含已更改的数据,他/她将在该页面上看到这些更新。如果对数据库中的数据进行了更新,但对用户正在查看的数据进行了更新,则用户屏幕上实际上不会发生太大变化(如果添加或删除记录,可能只是滚动条)。

我当前的方法是使用 SQL Server 更改跟踪和同步框架。每个客户端都有一个本地 SQL Server CE 实例和与主数据库服务器保持同步的数据库文件。我使用同步事件中的信息来查看是否对主数据库进行了任何更改并同步到客户端。我需要在这里使用 DataGridView 虚拟模式,因为我不能一次将数千条记录加载到 DataGridView 中,否则内存使用量会急剧增加。

目前的主要挑战是了解如何使用虚拟模式通过允许用户上下滚动记录来为用户提供无缝体验,并在不不当干扰用户的情况下动态更新记录。以前有人处理过这个问题吗?如果是的话,我在哪里可以看到他们是如何做到的?我已经浏览了一些有关虚拟模式的 MSDN 文档和示例。到目前为止,我还没有在他们的网站上找到解释如何完成我想要完成的任务的文档和/或示例。


添加以下内容以形成启动

 dataGridView1.CellValueNeeded +=new DataGridViewCellValueEventHandler( dataGridView1_CellValueNeeded );  
    dataGridView1.VirtualMode = true;

在您收到更新的地方使用以下代码

dataGridView1.RowCount = (int)rowscount.TotalCount;

添加以下功能:

private void dataGridView1_CellValueNeeded( object sender, DataGridViewCellValueEventArgs e )
            {
                _cache.LoadPage( e.RowIndex );    
                int rowIndex = e.RowIndex % PageSize;    
                e.Value = datatable.rows[rowIndex][e.ColumnIndex];
            }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DataGridView使用虚拟模式实时显示数据表 的相关文章

随机推荐

  • 如何使用简单的样式表转换 ms excel xml?

    我需要使用样式表转换以 xml 格式保存的 Excel 电子表格 但我一直对 ms 使用的许多命名空间感到困惑 我需要一个XSLT 样式表允许输入 xml 的每个元素传递 当我使用样式表时 默认值似乎传递所有文本 否则该样式表应该只传递我正
  • 虚拟主机配置中的 apache 西里尔文通配符

    有一个问题 我有一个包含许多子域的项目 它的配置如下 VirtualHost1 ServerAlias a example com VirtualHost2 ServerAlias b example com VirtualHost3 Se
  • android studio 中带有选择器的图像按钮渲染错误

    我用选择器制作了一个具有按下效果的按钮 我正在使用 android studio 当我使用 eclipse 时它运行良好 但是 当我在 android studio 中尝试时 日志不断显示错误 这是我的日志 java lang NullPo
  • 一种计算响应式网格中列数的方法

    虽然我还没有找到答案 但问题很简单 有没有办法 除了蛮力之外 计算响应式网格中的列数 grid container width 100 height 85 position relative padding var gap adjusted
  • 在 dplyr summarise 中使用变量列名

    我发现这个问题已经被问过 但没有正确的答案 R在dplyr的summary函数中使用变量列名 https stackoverflow com questions 31979189 r using variable column names
  • 如何使用 JMock 在 java 中模拟静态变量

    我有一个单元测试问题 其中一个类有一个静态变量想要加载 Spring 应用程序 Ctx 这个类不是来自 Bean Factory 我无法改变这个事实 static ApplicationContext applicationContext
  • 多个 AVAudioRecorder 实例

    我正在开发一个记录声音的应用程序 此外 我希望用户能够用自己的声音评论某些情况 我认为配置一个音频会话并创建两个具有不同文件 URL 的 AVAudioRecorder 实例就足够了 但这不起作用 第二个录音机确实创建了其音频文件 但它不记
  • AAA在8086指令集中如何工作?

    有一些关于指令如何工作的算法的信息 if low nibble of AL gt 9 or AF 1 then AL AL 6 AH AH 1 AF 1 CF 1 else AF 0 CF 0 in both cases clear the
  • 如何将 npm(node.js 包管理器)添加到 PATH 中?

    我像这样安装了node js cd usr local bin git clone depth 1 http github com joyent node git cd node git checkout origin v0 4 optio
  • 使用 html Mailto 向多个收件人发送电子邮件:不起作用

    我们有 400 到 500 百封电子邮件 当我们连接它们并将它们放入 mailto 时 它不起作用 浏览器会自动在电子邮件之间添加 并且单击链接不起作用 a href open emails a 是否有最大长度mailto 属性 还有其他方
  • 在 Windows 上编译 MatConvNet

    我正在尝试编译矩阵卷积网络 http www vlfeat org matconvnet 在 Windows 8 1 上 因为我似乎需要使用 Makefile 来做到这一点 所以我下载了GNUWin 制作 http gnuwin32 sou
  • 在 AVX 中寻找绝对

    在其中一个解决方案中 他 她发现abs inp 对于 AVX 向量 m256 符号位 mm256 set1 ps 0 0f m256 inp abs mm256 andnot ps sign bit inp 其背后的逻辑是什么 SSE AV
  • PayPal API - 验证帐户是否有效/存在/已验证

    有人能够仅通过电子邮件地址验证 PayPal 帐户的有效性吗 AdaptiveAccounts GetVerifiedStatus 用 PayPal 自己的话说 仅供其关键战略客户使用 见下文 我找不到任何其他方法来根据电子邮件地址检查帐户
  • asp.net表单身份验证多人使用同一用户名登录

    我有一个使用表单身份验证的 MVC3 网站 我想知道如果多个或更多人使用同一用户帐户登录是否会出现任何问题 我一直在尝试解决我们遇到的错误 看起来网站服务器在与数据库服务器通信时出现问题 但是我只是想排除帐户共享引起问题的可能性 Thank
  • F# 命名空间或模块“XXXX”未定义

    我正在尝试创建一个基本的 ASP net f 应用程序 当我尝试引用 Youtube net API 时 我在代码隐藏文件中收到 命名空间或模块 Google 未定义 我在 Visual Studio 中使用了默认的 ASP Web 表单模
  • 选择一个 xml 元素,忽略元素名称,打印换行符

    我想选择第一个元素 但在输出中忽略它的名称 这就是我在请求第一个之后得到的url每个输入 xml 文件中的元素 xmllint xpath yandexsearch response results grouping group doc u
  • 自定义进度绘制不适用于 Android Lollipop (API 21) 设备

    我有一个进度绘图 它在运行 Android Lollipop 的设备上无法正常工作 Screenshot on M Screenshot on Lollipop Circle percentage drawable xml
  • 从 OrderedDict 中提取数据

    所以我有一个 firebase 数据库 这是我获取特定数据的代码 db firebase database test db child Users order by child IDNumber equal to 222333123 get
  • ng build 和 ngserve 有什么区别?

    ng build 和 ngserve 有什么区别 ng build 和 ngserve 之后到底发生了什么或发生了什么变化 The ng build命令专门用于构建应用程序和部署构建工件 The ng serve命令旨在实现快速 本地和迭代
  • DataGridView使用虚拟模式实时显示数据表

    我有一个 DataGridView 它将显示数据库中的记录 日志条目 一次可以存在的记录量非常大 我想使用 DataGridView 的虚拟模式功能来显示数据页 并最大限度地减少给定时间必须通过网络传输的数据量 轮询数据是不可能的 一次将有