I have a Grid that has a large number of columns, one for each day. There could be 100s of columns in this DataTable for those many days. After the DataTable is bound to the Grid, I am setting the width of each column as you see in the code snapshot.
I find it hard to understand why setting the Width is so expensive. It takes 24.86 compared to setting the Format on the next line which take only 0.003 . I found it hard to believe at first but repeated runs of C# profiler confirmed this inefficiency.
Is there a way I can avoid setting the column width one at a time. Is there Grid level or row level setting? Or some other suggestion?
Thanks!
I am on version 7.3
Hi,
Do you have the latest service release? I think there might have been some optimizations made in this area in a recent service release.
How to get the latest service release - Infragistics Community
Also, if you are looping through the grid columns and setting lots of properties on a lot of different columns, it's a good idea to try to make this code as efficient as possible. I recommend that you do this in the InitializeLayout event of the grid, if you can.
Also, you should use the BeginUpdate/EndUpdate methods on the grid. There is further discussion of this technique in the WinGrid Performance Guide.
Infragistics Mike Saltzman said: Also, if you are looping through the grid columns and setting lots of properties on a lot of different columns, it's a good idea to try to make this code as efficient as possible. I recommend that you do this in the InitializeLayout event of the grid, if you can.
If I move code to InitializeLayout, would it help to have the BeginUpdate/EndUpdate in InitializeLayout?
Infragistics Mike Saltzman said: Also, you should use the BeginUpdate/EndUpdate methods on the grid. There is further discussion of this technique in the WinGrid Performance Guide.
How about Resume/SuspendRowSynchronization()? Makes senses if I use it in InitializeLayout? or only in other methods?
vrn said:If I move code to InitializeLayout, would it help to have the BeginUpdate/EndUpdate in InitializeLayout?
It depends what you are doing, but yes I would use BeginUpdate/EndUpdate. It can't hurt and it might help. :)
vrn said:How about Resume/SuspendRowSynchronization()? Makes senses if I use it in InitializeLayout? or only in other methods?
These are typically useful when you are modifying the data source that the grid is bound to. I don't think there is any benefit in using these if you are modifying the grid directly, such as the column width. But again, it could not hurt.
@ Mike I am having the same Issue with the width property of a grid Column , I am using infragastics 14.1 and I am setting the width in code behind for 41 columns it is taking around 8 to 10 sec which is very expensive , I tried using BeginUpdate and EndUpdate , BeginInit and endInit. making the columns invisible and change width and make it visible nothing works.
Please provide me some suggestion for this issue with set of width property.
I can't imagine any reason why it should take that long to set the Width on 41 columns. Can you post a small sample project duplicating the problem?