让我先概述一下情况:我们有一个应用程序,可以监视从&到文件服务器的文件传输。当用户传输一个/多个文件时,复制的结果将显示在概述中,其中Xtragrid-Gridcontrol显示所有文件,如果副本成功与否。
如果de是,则显示一个组合框选择所需的操作(忽略、重试、链接、.)。此组合框使用事件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在显示表单时(尽管已经设置了数据源)时仍然在加载.If,但质量有时很大,用户过早地将与xtragrid交互(同时仍然加载),然后我们得到Xtragrid的ArgumentOutOfRangeException异常。(由于可视组件的数据源仍在更改)
所需的解决方案:
我们应该防止用户在网格仍然加载时与其交互(看起来很明显)。
不起作用的解决方案:
设置数据源时将触发事件DataSourceChanged。加载所有行时,而不是。
每次事件CustomRowCellEdit被触发时,简单地启用/禁用网格,->大规模的性能
问题:有谁也解决过这个问题吗?是否有一种完全可验证的方法来检测Xtragrid是否已经完全加载了它的数据源(并将其可视化)?或者有一个解决办法,我不再需要使用CustomRowCellEdit了?(其他类型网格的解决方案也受到欢迎)
谢谢大家抽出时间
注意:不要求更多代码。问题不在于代码,而在于我对Gridcontrol-Events的使用
Documentation: RowCellEdit
发布于 2014-06-05 18:04:35
我有时也会在我的应用程序中遇到这种情况。我主要将网格绑定到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
' ...https://stackoverflow.com/questions/24060444
复制相似问题