簡體   English   中英

Devexpress-Xtragrid:ArgumentOutOfRangeException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM