[英]Devexpress - Xtragrid : ArgumentOutOfRangeException
讓我先概述一下情況:我們有一個應用程序,監視從&到文件服務器的文件傳輸。 當用戶傳輸一個或多個文件時,復制的結果將顯示在概述中,其中Xtragrid-Gridcontrol會顯示所有文件,以及復制是否成功。
如果復制未成功,則會顯示一個組合框以選擇所需的操作(忽略,重試,鏈接等)。 使用事件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
經常仍在加載(盡管數據源已經設置)。如果用戶與xtragrid-gridcontrol交互太早 (雖然仍在加載),那么我們會得到一個Xtragrid
ArgumentOutOfRangeException
異常。 (由於可視組件的數據源仍在變化)
所需的解決方案:
我們應該防止用戶在網格仍然加載時與其進行交互(似乎很明顯)。
不起作用的解決方案:
設置數據源時,將觸發事件DataSourceChanged
。 加載所有行時不行 。
每次觸發CustomRowCellEdit
事件時,簡單地啟用/禁用網格-> Massive Performanceloss
問題:有人也對此問題有所啟發嗎? 是否有一種完全可靠的方法來檢測Xtragrid是否已完全加載其數據源(並將其可視化)? 還是有不需要我不再使用CustomRowCellEdit
的解決方法? (也歡迎其他類型網格的解決方案)
謝謝大家的時間
注意:不要要求更多代碼。 問題不在於代碼,而在於我對Gridcontrol-Events
文檔: RowCellEdit
有時我也會在應用程序中遇到此問題。 我主要將網格綁定到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
' ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.