Devexpress - Xtragrid:ArgumentOutOfRangeException

时间:2014-06-05 12:37:46

标签: .net vb.net devexpress xtragrid gridcontrol

让我先描述一下情况: 我们有一个监控来自&的文件传输的应用程序。到文件服务器。当用户传输一个/多个文件时,副本的结果将显示在概述中,其中 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

1 个答案:

答案 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
' ...