We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy.
Unfortunately, activation email could not send to your email. Please try again.

DataBoundGrid ColumnMapping Question

Thread ID:





15411 Jun 17,2004 08:02 AM Jun 18,2004 04:11 AM Windows Forms 5
Tags: GridControl
Administrator [Syncfusion]
Asked On June 17, 2004 08:02 AM

I have a grid bound to a sql dataset with about 20 columns in. I have used the designer to bind the column names in the dataset to the grid columns I have set up. I would like my users to be able to show or hide columns based on checkbox option controls. i.e If they check the "Stock Info" checkbox then I would un-hide the 4 columns with stock information in. I have made a Sub that shows or hides a columns based on its gridcolumn index but I would ideally like to show or hide a columns based on its dataset mapping name so that if I change the order of my grid columns at a later date I dont have to re-index all these show hide functions. Ideally I would like it to work like this: Me.Grid.Model.HideCols(Me.Grid.Binder.MappingToColIndex("qtyinstock")) = False Then I would just repeat this for each column I would want to hide. Can you point me in the right direction?

Administrator [Syncfusion]
Replied On June 17, 2004 08:09 AM

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

Administrator [Syncfusion]
Replied On June 17, 2004 09:07 AM

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.

Administrator [Syncfusion]
Replied On June 17, 2004 11:12 AM

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.

Administrator [Syncfusion]
Replied On June 18, 2004 03:01 AM

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

Administrator [Syncfusion]
Replied On June 18, 2004 04:11 AM

>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".


This post will be permanently deleted. Are you sure you want to continue?

Sorry, An error occured while processing your request. Please try again later.

You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.