AD
Administrator
Syncfusion Team
June 17, 2004 12:09 PM UTC
In a GridDataBoundGrid, you can index the grid.Model.Cols.Hidden collection with a mappingname. So, code like this should hide a column whose ColumnName is "Col1".
Me.gridDataBoundGrid1.Model.Cols.Hidden("Col1") = True
AD
Administrator
Syncfusion Team
June 17, 2004 01:07 PM UTC
That worked like a treat thanks v much.
However when the hidden columns are shown they take over a second to appear and you can almost see them drawing as they appear. Is there a way to un-hide mutiple columns at the same time or a better way to refresh the grid? It seems quirky that I have a loop through the columns that I want to un-hide or can I specify a list or collection to the HideCols function?
I woud rather that I re-draw all the columns at once rather than have to do three re-draws when I unhide three columns. The grid is faily dense but I am only using static cells and simple alternating row colours and some cell borders.
AD
Administrator
Syncfusion Team
June 17, 2004 03:12 PM UTC
Try calling
grid.BeginUpdate()
''show multiple columns
''
''
grid.EndUpdate()
grid.Refresh()
This should turn off drawing until all the columns are marked visible, and then draw them all at once.
AD
Administrator
Syncfusion Team
June 18, 2004 07:01 AM UTC
Thanks for the tip, that made the redraw of the hidden columns a lot quicker.
Now I have a problem with cell background colours which I am colouring using PrepareViewStyleInfo. I am alternating the row colurs which I have done and I am also re-colouring the row on certain conditions and now I need to add in about 10 more conditions for colouring the backgorund of the cell. I can use the column index to do this but I have the same problem as with the hidden columns that if I change the ordering of the columns I am going to have to re-do all my code again.
Using this code causes the grid drawing to slow right down
If Me.grd_Data(e.RowIndex, Me.grd_Data.Binder.InternalColumns("deleted")).Text = "Y" Then
e.Style.BackColor = ColorTranslator.FromHtml("#ffe0e0")
ElseIf Int(Me.grd_Data(e.RowIndex, Me.grd_Data.Binder.InternalColumns("stockqty")).Text) > 0 Then
e.Style.BackColor = ColorTranslator.FromHtml("#ccffcc")
End If
So I thought I would create a hastable or array that holds the gridmapping name (for ease of use) and the grid column index (for quicker access to grid features). Could you provide me with a sample of how to loop though the columns of the grid pull out the index and mapping name?
Then using the array I can get the PrepareViewStyleInfo to execute quicker rather than going to the underlying binder all the time or am I totally doing this wrong?
Thanks, Mark
AD
Administrator
Syncfusion Team
June 18, 2004 08:11 AM UTC
>Me.grd_Data.Binder.InternalColumns("deleted")).
If this is the code you are using to produce a column location in PrepareViewStyleInfo, I suspect you may be getting some exceptions being thrown, and that will slow things down.
Instead of the above, try
Me.grd_Data.Binder.NameToColIndex("deleted")
to retrive the ColIndex for the column named "deleted".