问题标签 [virtualmode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
14484 浏览

c# - 为数据绑定的 datagridview 实现虚拟模式

一个关于实施建议的一般问题。

我有一个绑定到datagridview.

我想实现virtual mode是因为集合可能包含数百万个条目(Line对象),所以我认为一次只“缓存”或显示一些需要的条目可能会更快。我理解虚拟模式的用途是什么?

我看过:http: //msdn.microsoft.com/en-us/library/2b177d6d.aspx

但我无法让它为 a datagridviewthat is工作databound

我无法指定行数:

编辑:此链接表明我可能必须完全删除绑定。是这样吗?http://msdn.microsoft.com/en-us/library/ms171622.aspx

“如果绑定模式不能满足您的性能需求,您可以通过虚拟模式事件处理程序管理自定义缓存中的所有数据。”

0 投票
0 回答
178 浏览

c# - C# winform,如何在一个或多个DataGridView中设置DataGridView VirtualMode

我正在开发一个 Windows 窗体项目。在我的表单中,我有两个 DataGridView。

我想将两个 DataGridViews 设置为 DataGridView.VirtualMode。

除了像下面这样创建两次代码之外,有没有什么有效的方法来完成这项任务?

寻求您的建议,在此先感谢。

0 投票
1 回答
902 浏览

c# - C# DataGridView 虚拟模式:使用 CellValuePushed 将数据写回数据库

我目前正在尝试在客户端-服务器系统中实现虚拟 DataGridview 以提高性能。

为此,我使用了 Microsoft 建议的以下代码:http: //msdn.microsoft.com/de-de/library/ms171624.aspx

到那时,一切都很好,并且正在按应有的方式进行。问题是,该示例不包括将数据写回数据库。我需要用户能够提交更改。我了解到,如果用户更改 GridView 中的任何值,就会触发 CellValuePushed-Event。在网上搜索了几个小时后,我仍然没有找到将数据保存回数据库的方法。

我是否必须使用更改后的值更新底层 DataTable,然后刷新 Gridview?

有没有人可以帮助我一些代码或一些提示?任何帮助将不胜感激 :-)

0 投票
1 回答
5446 浏览

c# - C# DataGridView 虚拟模式:启用排序

有没有办法在虚拟模式下对 DataGridView 进行排序?

我在这个微软示例之后以虚拟模式实现了一个 Gridview:http: //msdn.microsoft.com/de-de/library/ms171624.aspx。我还修改了示例以便能够将数据写入数据库。这很好用,虚拟模式大大提高了速度,但我的客户需要对列进行排序。

在网上搜索了一段时间后,我找到了链接http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/25b3f7c3-95b6-4c49-802b-b5a2a62915ac,但无法获得工作。

谁能指出如果有办法在虚拟模式下对列进行排序,如果是这样,我该怎么做?

提前非常感谢!

0 投票
4 回答
2859 浏览

c# - 在虚拟模式下闪烁的 ListView

我在默认 ListView 中发现了一个不太有趣的错误(不是所有者绘制的!)。当项目不断添加到其中(通过使用示例)并且用户试图看到项目稍微远离所选项目(向上或向下滚动)时,它会严重闪烁。Timer

我在这里做错了吗?

这是一些重现它的代码:

  • 创建 WindowsFormsApplication1;
  • 将表格设置WindowState为最大化;
  • 穿上form timer1,设置Enabled为true;
  • 放在表格listView1上:

    /li>
  • 添加一列;

  • 添加事件

    /li>
  • 最后

    /li>

现在运行它并等待列表视图上的滚动条出现(因为计时器将添加足够的项目),然后:

  • 选择列表视图中的第一个项目(使用鼠标或键),然后使用滚动条或鼠标滚轮向下滚动,以便所选项目将超出当前视图(向上)。向下滚动的次数越多,闪烁就越重!看看滚动条在做什么?!?!?

  • 如果向下滚动所选项目,则会出现类似的效果。


问题

我该如何处理?想法是有一种不断更新的日志窗口,可以停止自动滚动并向上/向下调查附近的事件。但有了这种kek 效应,这是不可能的!

0 投票
1 回答
2335 浏览

c# - 检查所选项目是否可见[详细视图中的虚拟 ListView]

主题有什么好的/简短的解决方案吗?

我能想到:

  • 获取TopItem索引(在VirtualMode创建项目之前是否可以为空?),如果所需项目的索引较小,则不可见,否则获取底部可见索引(顶部索引+ listView.ClientSize.Height / GetItemRect(TopItem).Height),如果所需项目的索引更多,则为无形的。否则可见。

  • 以某种方式检测滚动并做某事。

或者也许有更简单的方法?

0 投票
1 回答
3234 浏览

datagridview - 如何从大型 datagridview 中快速删除重复项?

我需要能够快速删除 datagridview 中的重复条目。不幸的是,我这样做的方式可能需要几分钟才能处理超过 100K 的项目。

这是我正在使用的代码:

datagridview 处于虚拟模式以支持海量数据。

如果有人可以帮助我找出一种快速消除欺骗的方法,我将不胜感激。

0 投票
0 回答
180 浏览

.net - ListView控件在虚拟模式下不能拖放

我已经搜索过,但我找不到我的问题的答案。我有一个正在移动到 VirtualMode 的 ListView,但是当我尝试拖动操作时,它失败了。它找不到正确的插入索引,因为这些项目是虚拟的。在虚拟模式下如何正确拖动 ListView 项?

基本上问题是,无论鼠标在哪里, NearestIndex 都会返回 -1。此代码在移至虚拟模式之前有效。

0 投票
1 回答
1288 浏览

c# - DataGridView 虚拟模式列分隔符双击自动调整大小

我在虚拟模式下有一个带有 DataGridView 的 winform 应用程序,一切正常!唯一的问题是,当我双击列分隔符时,控件试图使列宽适合所有单元格,而不仅仅是显示的或可见的!显然这会挂起应用程序。

我尝试了各种配置

一切!,数据网格和每一列中的设置!没有任何作用

任何想法?

最终结果是:用户能够调整列的大小,但不能通过双击列边框来调整!..我不在乎它是否不适合。

0 投票
1 回答
193 浏览

c# - 在虚拟模式下设置 DataGridViewComboBoxCell 的数据源

将虚拟模式与 DataGridView 一起使用时,我订阅了 CellValueNeeded 事件以即时获取数据。在处理程序中,我有区分列的逻辑,如果它是 DataGridViewComboBoxColumn,我想给它一个数据源。我的问题是,当我将数据源分配给单元格时,出现堆栈溢出,因为在 DGV 代码中,再次调用了 CellValueNeeded,并发生了无限循环。有什么干净的方法吗?