让我先描述一下情况: 我们有一个监控来自&的文件传输的应用程序。到文件服务器。当用户传输一个/多个文件时,副本的结果将显示在概述中,其中 Xtragrid-Gridcontrol 显示所有文件以及副本是否成功。
当de copy not successfulfull 时,会显示一个组合框来选择所需的操作(忽略,重试,链接......)。使用事件CustomRowCellEdit
来自CustomRowCellEdit的代码示例:
Dim myCb As RepositoryItemLookUpEdit = New RepositoryItemLookUpEdit
myCb.DataSource = GenerateActionlistForDoubleFolder()
myCb.NullValuePrompt = Documentum.Common.Tools.Translate(Tools.Config(m_Docbase), "[SELECT_ACTION]")
myCb.NullText = Documentum.Common.Tools.Translate(Tools.Config(m_Docbase), "[SELECT_ACTION]")
e.RepositoryItem = myCb
问题:
正在复制越来越大的文件数量。当显示表单时,虽然已经设置了数据源,但有时候Xtragrid-Gridcontrol
通常仍在加载,但是用户很快就会加载。如果用户与xtragrid-gridcontrol交互过早(虽然它仍在加载)然后我们得到ArgumentOutOfRangeException
的{{1}}例外。 (由于可视组件的数据源仍在变化)
所需的解决方案:
我们应该阻止用户在网格仍然加载时与网格进行交互(似乎很明显)。
无效解决方案:
设置数据源时会触发事件Xtragrid
。加载所有行时不。
每次触发事件DataSourceChanged
时简单启用/禁用网格 - >巨大的性能损失
问题:
还有人遇到过这个问题吗?是否有一种全面的方法来检测Xtragrid是否已完全加载其数据源(并将其可视化)?或者是否有一种解决方法,我不再需要使用CustomRowCellEdit
?
(欢迎来自其他类型网格的解决方案)
谢谢大家的时间
注意:不要求更多代码。问题不在于代码,而在于我对CustomRowCellEdit
文档: RowCellEdit
答案 0 :(得分:1)
我有时会在我的应用程序中遇到这种情况。我主要将我的网格绑定到DataTable
,并且我发现效果最佳的解决方案是,在您的数据加载时,将gridControl.DataSource
设置为null/Nothing
和致电Application.DoEvents()
。填充基础数据源后,将DataSource
设置回源。
这样做的目的是实现一种确定性的方式来告知数据何时被加载。这是一个基本的示例实现。
myGrid.DataSource = Nothing
Application.DoEvents
FillDataTableWithLoadsOfRows(myDataTable)
myGrid.DataSource = myDataTable
' ...
'Whatever actions to do that require the data to be in the grid
' ...