问题标签 [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 投票
2 回答
1924 浏览

c# - 处于虚拟模式时如何枚举 ListView?

当 ListView 处于虚拟模式时如何枚举它?

我正在使用OfType<>()方法来枚举列表视图项。但是它会抛出一个异常,例如列表视图在虚拟模式下无法枚举。

这是我的代码

那么,当它处于虚拟模式时,我如何从 ListView 中获取项目?

请给我一个使用 .OfType<> 的方法

提前致谢

0 投票
3 回答
22427 浏览

c# - 如何找出当前在屏幕上的 DataGridView 行?

在我的 C# (2010) 应用程序中,我有一个虚拟模式下的 DataGridView,它可以容纳数千行。是否可以找出当前屏幕上的单元格?

0 投票
2 回答
107 浏览

c# - 如何判断某人何时从 CollectionBase 读取项目

我不确定这是否可以使用 CollectionBase 类。我想知道何时有人访问 CollectionBase 类中的项目。

最终目标是创建一个“VirtualMode”(类似于 DataGridView 控件),允许我在用户获取数据之前检查和验证数据。

所以会发生什么,他们可以创建一个包含 20 个对象的集合,在内部我们修改 IList 以包含 20 个空对象,然后当他们尝试读取一个项目时,如果它为空,我们转到外部数据源并读取它在那个时候。然后我们用读取的类替换现有的空对象,下次他们尝试访问它时,他们会得到缓存的版本。

打出来之后。我想知道 OnValidate 是否是这样做的正确位置。

任何帮助将不胜感激。

特雷弗·沃森

0 投票
1 回答
2556 浏览

c# - DataGridView、虚拟模式和“滞后”

我的代码如下所示:

  • ArrayOfRecordsstring[]每秒更新 10-100 个新对象。
  • VirtualMode设置为真。
  • SelectionMode设置为FullRowSelect
  • dataGridView是只读的。

现在还有一个ProgressBarwithMarquee样式,它告诉我说 5000+ 行滚动冻结,Form但我想这只是线程/后台工作人员等的问题。

最让我害怕的是选择。拥有8000 行并单击最后一行 (8000) 需要我的表单 4.2 秒来选择它。它如下:

4000 行使其需要 2.1 秒等。如果选择第 8000 行最小化,然后最大化需要 4.2 秒。选择第 1 行“使它”再次快乐。这是不可接受的。*为什么为我的“标记”第 8000 行这么难Form

VirtualMode 的分页效果很好,但选择很痛苦。

还有另一个问题/行为:

为什么CellValueNeeded当我将鼠标移到行上时会引发事件?他们已经画好了?那么为什么会浪费资源呢?

这个选择问题有什么解决方案吗?或者我必须限制数据网格中的最大记录

0 投票
0 回答
364 浏览

listview - 什么时候应该为虚拟 ListView 调用 AutoResizeColumns?

我正在设置一个虚拟ListView的详细信息模式,我希望它的列自动调整大小,以免截断当前可见项目的文本。

调用AutoResizeColumns效果很好(至少看起来确实如此,因为文档不清楚这个函数在虚拟模式下会发生什么);同样,双击列标题也可以正常工作。

但是,我不知道何时调用该AutoResizeColumns方法:在RetrieveVirtualItem事件处理程序的末尾不起作用,因为调用AutoResizeColumns也会触发RefreshListView 的 a。

你能给我一些指点吗?

0 投票
5 回答
22116 浏览

c# - ListView OwnerDraw 的默认实现

我有一个ListView,我希望在其中调整项目的绘制(例如突出显示列表视图项目中的某些字符串),但是我不想从根本上改变项目的显示方式。

我已将OwnerDraw设置为 true,并且可以了解如何绘制突出显示效果,但是每当我尝试遵循默认实现来绘制列表视图项目的其余部分时,事情就会出错,我只剩下一个整体大量图形问题表明实际上我完全出错了。

有没有什么地方我可以看到DrawItemDrawSubItem事件的“默认”处理程序做了什么,以便我可以更好地理解并更轻松地调整我的代码?

作为参考,这里有一个片段显示我目前正在做的事情:

0 投票
1 回答
86 浏览

winforms - 当我对虚拟模式下的 ListView 的基础列表进行排序时,如何对选择进行排序?

当 aListView处于虚拟模式时,您负责在它通过事件询问时提供与 index 对应的ListViewa 。ListItemnOnRetrieveItem

我根据自己的规则对列表进行排序,并告诉列表视图重新绘制:

这很好,花花公子。

除非用户选择了某些项目。现在,当树重新绘制时,会选择不同的项目。

排序的技术SelectedIndices是什么?

但是,如果我对自己的个人列表进行排序

0 投票
2 回答
2618 浏览

c# - 在VirtualMode中Winforms DataGridView何时调用AutoResizeColumn?

我已经DataGridView在我的表格上实施了 a 并成功实施VirtualMode。这将从本地缓存中检索单元格数据,并且在填充网格/分页等时一切似乎都正常工作。我处理DataGridView.CellValueNeeded事件以填充单元格。

在 DataGridView 上,我将AutoSizeColumnsMode属性设置为DataGridViewAutoSizeColumnsMode.DisplayedCells. 我注意到在使用 VirtualMode 时,DataGridView 在填充单元格后似乎不尊重 AutoSizeColumnsMode。我已经检查了这篇文章,但没有找到解决方案。

我最终想做的是不依赖该AutoSizeColumnsMode属性,而是在某处.AutoResizeColumn()调用该方法来调整大小,所以我最初自动调整列的大小,然后允许用户调整大小。

我尝试了以下方法,但效果有限或没有成功:

  1. 设置DataGridView.AutoSizeColumnsMode.None。然后在我的 .CellValueNeeded处理程序中

    这抛出一个StackOverFlowException大概是因为它反复加注.CellValueNeeded

  2. .CellFormatting 除了在事件处理程序中尝试完全相同的事情。得到相同的 StackOverFlowException

  3. 尝试有无DataGridView.SuspendLayout/ResumeLayout

    这给出了所有空白单元格,所以没有用。

  4. 这个实际上有点工作,原因我不明白:

    它正确调整了列的大小,但是必须在所需的每个单元格值上重复调用它似乎很奇怪。另外,我不能立即将其设置为 .None ,否则它会StackOverFlowException再次设置。因此,我不能允许用户调整列的大小。

  5. .UpdateCellValue()如文章中所述,从我的处理程序中调用也会.CellValueNeeded引发StackOverFlowException

那么是否有可能在它溢出之前.AutoResizeColumn()不会引发的地方调用?.CellValueNeeded由于#4 似乎能够执行自动调整大小功能,因此我似乎也可以从某个地方手动调用它。

0 投票
2 回答
1160 浏览

asp.net - ASP.net 的虚拟列表视图?

ASP.net 有虚拟列表视图吗?


我为 asp.net 找到的大多数表(和网格、列表视图、数据表、数据网格、网格视图、列表网格)都希望用户对数据进行分页。

我想要一个包含例如 10,000 个项目的列表视图;我不想要 10 页。

1994 年,使用“虚拟”模式下的列表视图解决了长列表的问题。控件只需要给出要显示的项目数。根据需要(即当用户将它们滚动到视图中或尝试对列进行排序时)有关这些项目的控制信息。

有没有人创建了一个虚拟列表视图(大概使用异步 Javascript 和 XML,或同步 Javascript 和 XML)?


如果答案是“否”:不要害怕回答问题。答案没有错:

不。

0 投票
3 回答
2256 浏览

xml-parsing - Issue Changing Simple Text on header.tpl using VQMOD in OpenCart

I am trying to use VQMOD for the first time and when I added the code below to my page nothing changed.

I tried to change the home link on top right of home page (open cart) to my home, but the text did not change. Unfortunately, there was no error on the VQMOD manager.

My XML code is Below. Do I need to add something to my TPL or make any other changes?