Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
DataGridView RowCount setting very slow
Message
De
28/10/2008 00:27:36
 
 
À
27/10/2008 16:06:14
Information générale
Forum:
ASP.NET
Catégorie:
Formulaires
Versions des environnements
Environment:
VB 9.0
OS:
Vista
Network:
Windows 2008 Server
Database:
MS SQL Server
Divers
Thread ID:
01357256
Message ID:
01357588
Vues:
66
Andrus,

Your test case, while it *does* duplicate the 8 second speed, is not representative of your actual problem .... for one thing, you're setting the RowCount to 1 million here but in your actual code from your first post, it's only 3500. When I plugged 3500 into the RowCount instead of 1000000, it was almost instantaneous.

I suspect that you have some event handlers set up that are firing 3500 times and that's what's causing the slow down. Or perhaps some other Grid settings are causing all the extra code that you showed in your trace to be firing. At any rate, the test case is not any help in tracking down the problem. Sorry! =0(

~~Bonnie






>I created testcase for it.
>Line
> m_Grid.RowCount = 1000000;
>
>takes 8 seconds.
>How to speed it up ?
>
>
using System;
>using System.Windows.Forms;
>using System.Collections.Generic;
>
>class test
>{
>    [STAThreadAttribute()]
>    public static void Main()
>    {
>        Application.Run(new VirtualModeForm());
>    }
>}
>
>class VirtualModeForm : Form
>{
>    private List<DataObject> m_Data = new List<DataObject>();
>    private List<bool> m_Visited = new List<bool>();
>    DataGridView m_Grid = new DataGridView();
>    public VirtualModeForm()
>    {
>        Controls.Add(m_Grid);
>        m_Grid.CellValueNeeded += OnCellValueNeeded;
>        InitData();
>        InitGrid();
>    }
>
>    private void InitData()
>    {
>        for (int i = 0; i < 1000001 + 1; i++)
>        {
>            m_Visited.Add(false);
>            DataObject obj = new DataObject();
>            obj.Id = i;
>            obj.Val = 2 * i;
>            m_Data.Add(obj);
>        }
>    }
>
>    private void InitGrid()
>    {
>        m_Grid.Dock = DockStyle.Fill;
>        m_Grid.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader);
>        m_Grid.VirtualMode = true;
>        m_Grid.ReadOnly = true;
>        m_Grid.ColumnCount = 108;
>        // this line causes 8 seconds delay. how to fix.
>        m_Grid.RowCount = 1000000;
>    }
>
>    private void OnCellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
>    {
>
>        m_Visited[e.RowIndex] = true;
>        if (e.ColumnIndex == 0)
>        {
>            e.Value = m_Data[e.RowIndex].Id;
>        }
>        else if (e.ColumnIndex == 1)
>        {
>            e.Value = m_Data[e.RowIndex].Val;
>        }
>        else if (e.ColumnIndex == 2)
>        {
>
>            Random rand = new Random();
>            e.Value = rand.Next();
>        }
>    }
>}
>
>public class DataObject
>{
>    private int m_Id;
>    private int m_Val;
>
>    public int Val
>    {
>        get { return m_Val; }
>        set { m_Val = value; }
>    }
>
>    public int Id
>    {
>        get { return m_Id; }
>        set { m_Id = value; }
>    }
>
>    public int Id1 { get; set; }
>    public int Id2 { get; set; }
>    public int Id3 { get; set; }
>    public int Id4 { get; set; }
>    public int Id5 { get; set; }
>    public int Id6 { get; set; }
>    public int Id7 { get; set; }
>    public int Id8 { get; set; }
>    public int Id9 { get; set; }
>    public int Id10 { get; set; }
>    public int Id11 { get; set; }
>    public int Id12 { get; set; }
>    public int Id13 { get; set; }
>    public int Id14 { get; set; }
>    public int Id15 { get; set; }
>    public int Id16 { get; set; }
>    public int Id17 { get; set; }
>    public int Id18 { get; set; }
>    public int Id19 { get; set; }
>    public int Id20 { get; set; }
>    public int Id21 { get; set; }
>    public int Id22 { get; set; }
>    public int Id23 { get; set; }
>    public int Id24 { get; set; }
>    public int Id25 { get; set; }
>    public int Id26 { get; set; }
>    public int Id27 { get; set; }
>    public int Id28 { get; set; }
>    public int Id29 { get; set; }
>    public int Id31 { get; set; }
>    public int Id32 { get; set; }
>    public int Id33 { get; set; }
>    public int Id34 { get; set; }
>    public int Id35 { get; set; }
>    public int Id36 { get; set; }
>    public int Id37 { get; set; }
>    public int Id38 { get; set; }
>    public int Id39 { get; set; }
>    public int Id310 { get; set; }
>    public int Id311 { get; set; }
>    public int Id312 { get; set; }
>    public int Id313 { get; set; }
>    public int Id314 { get; set; }
>    public int Id315 { get; set; }
>    public int Id316 { get; set; }
>    public int Id317 { get; set; }
>    public int Id318 { get; set; }
>    public int Id319 { get; set; }
>    public int Id320 { get; set; }
>    public int Id321 { get; set; }
>    public int Id322 { get; set; }
>    public int Id323 { get; set; }
>    public int Id324 { get; set; }
>    public int Id325 { get; set; }
>    public int Id326 { get; set; }
>    public int Id327 { get; set; }
>    public int Id328 { get; set; }
>    public int Id329 { get; set; }
>
>
>    public int Id401 { get; set; }
>    public int Id402 { get; set; }
>    public int Id403 { get; set; }
>    public int Id404 { get; set; }
>    public int Id405 { get; set; }
>    public int Id406 { get; set; }
>    public int Id407 { get; set; }
>    public int Id408 { get; set; }
>    public int Id409 { get; set; }
>    public int Id4010 { get; set; }
>    public int Id4011 { get; set; }
>    public int Id4012 { get; set; }
>    public int Id4013 { get; set; }
>    public int Id4014 { get; set; }
>    public int Id4015 { get; set; }
>    public int Id4016 { get; set; }
>    public int Id4017 { get; set; }
>    public int Id4018 { get; set; }
>    public int Id4019 { get; set; }
>    public int Id4020 { get; set; }
>    public int Id4021 { get; set; }
>    public int Id4022 { get; set; }
>    public int Id4023 { get; set; }
>    public int Id4024 { get; set; }
>    public int Id4025 { get; set; }
>    public int Id4026 { get; set; }
>    public int Id4027 { get; set; }
>    public int Id4028 { get; set; }
>    public int Id4029 { get; set; }
>    public int Id4031 { get; set; }
>    public int Id4032 { get; set; }
>    public int Id4033 { get; set; }
>    public int Id4034 { get; set; }
>    public int Id4035 { get; set; }
>    public int Id4036 { get; set; }
>    public int Id4037 { get; set; }
>    public int Id4038 { get; set; }
>    public int Id4039 { get; set; }
>    public int Id40310 { get; set; }
>    public int Id40311 { get; set; }
>    public int Id40312 { get; set; }
>    public int Id40313 { get; set; }
>    public int Id40314 { get; set; }
>    public int Id40315 { get; set; }
>    public int Id40316 { get; set; }
>    public int Id40317 { get; set; }
>    public int Id40318 { get; set; }
>    public int Id40319 { get; set; }
>    public int Id40320 { get; set; }
>    public int Id40321 { get; set; }
>    public int Id40322 { get; set; }
>    public int Id40323 { get; set; }
>    public int Id40324 { get; set; }
>    public int Id40325 { get; set; }
>    public int Id40326 { get; set; }
>    public int Id40327 { get; set; }
>    public int Id40328 { get; set; }
>    public int Id40329 { get; set; }
>}
>
Bonnie Berent DeWitt
NET/C# MVP since 2003

http://geek-goddess-bonnie.blogspot.com
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform