簡體   English   中英

Infragistics UltraGrid - 網格初始化后的事件

[英]Infragistics UltraGrid - event after grid initialized

我在 V15.1 中使用 Infragistics UltraGrid,並且在使用 'InitializeRow' 行事件對網格中的每一行進行着色和格式化時,初始化網格所需的時間存在問題。 我想在發生這種情況時顯示一個“忙碌”的圖像,因為它可能需要幾秒鍾的時間來處理。 顯示圖像沒有問題,但我看不到任何在初始化所有行並且正在顯示網格后觸發的事件。 如果我只是在我填充網格的位周圍添加它,這幾乎是即時的,但 InitializeRow 發生在此之后......

當網格完成對所有行的初始化時,不會觸發任何事件,因為網格從未真正完成對行的初始化。 數據綁定是一個持續的過程,而不是一次性的。 當該行中的值發生更改,或者將新行添加到網格或數據源時,將重新初始化行。

史蒂夫可能走在正確的軌道上。 你應該研究加快這個過程的方法。 InitializeRow 不應該花那么長時間,如果它花很長時間,則可以改進代碼以使其更高效。 查看WinGrid 性能指南以獲取一些提示或在此處發布代碼,我很樂意查看。

如果您絕對最多顯示等待指示器,那么很大程度上取決於您對網格執行操作的順序。 您是否綁定了網格,然后將行添加到您的數據源? 還是先添加所有行? 您的代碼中是否有任何內容迫使網格繪制?

在一個非常小的示例中,我使用 Paint 事件取得了一些成功。 但我想這可能不適用於所有情況,特別是如果您的代碼執行某些強制網格過早繪制的操作。

    private void Form1_Load(object sender, EventArgs e)
    {
        for (int i = 0; i < 10000; i++)
        {
            this.ultraDataSource1.Rows.Add(new object[] { i });
        }

        this.ultraGrid1.Paint += UltraGrid1_Paint;
    }

    private void UltraGrid1_Paint(object sender, PaintEventArgs e)
    {
        this.ultraGrid1.Paint -= UltraGrid1_Paint;
        Debug.WriteLine("PAINT");
    }

    private void ultraGrid1_InitializeRow(object sender, Infragistics.Win.UltraWinGrid.InitializeRowEventArgs e)
    {            
        Debug.WriteLine(e.Row.Index, "InitializeRow");
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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