Resize column width to fit widest column (html table style)
I am using the virtual grid and I need to handle the size of my columns.
My customer would prefer that the table columns is just the size of the widest text in the column. Pretty much like a html table works.
Right now I handle the QueryColWidth something like this for the dynamically resized columns:
e.Size = longestText.Length * cellFont.Height;
Where the longestText is a result of a search for the longest text in the column.
Hope you don't mind that all my questions come at once. I have been using the Grid for about three months and I have these final issues before the customer will accept my delivery.
Thanks again.
SIGN IN To post a reply.
5 Replies
AD
Administrator
Syncfusion Team
August 22, 2003 05:46 AM UTC
Did you mean to type cellFont.Width?
Is this not working for you?
Another way you can do this is to call
grid.ColWidths.ResizeToFit(GridRangeInfo.Table(), GridResizeToFitOptions.None);
at some point after you have subscribed to your virtual grid event handlers. Now, if your table is large, this may take some time as it visits each cell dynamically computing the size required using Graphics.MeasureString. So, in that case, your solutiion might be better.
JI
Jimmy
August 22, 2003 05:57 AM UTC
There is no Width property. It is a proportional font (verdana). The height returns the height of the tallest letter, so multiplying that by the length of a string and hoping to get a good result is a long shot - A hack even.
I think I am going to try a MeasureString on the longestText string I have.
Good idea.
You should consider getting a html mode in some future version.
Thanks.
AC
Aaron Ching
August 23, 2003 08:36 PM UTC
Hi, I have problem with similar issue. I have a GridControl (instead of a DataBound one) and when I double-click on the header border, it shrinks automatically to a fixed width. Is there some properties I need to set in order to have the double-click auto-resize to the width of the max string length?
So far, all ResizeToFit samples are referring to a DataBoundGrid. Is there an event on that header-border-double-click so I can call the ResizeToFit from there?
Many thanks as usual.
Aaron
AD
Administrator
Syncfusion Team
August 24, 2003 08:07 AM UTC
In a GridControl, when you double-click a column border, it resets the row height back to the default size, GridControl.DefaultColWidth. It does not autosize the column.
If you want to autosize the column on a doubleclick, you can catch the ResizingCols event, and autosize things yourself. Below is some code.
’ add the handler AddHandler Me.GridControl1.ResizingColumns, Addressof GridResizingColumns ..... Private Sub GridResizingCollumns(sender As Object, e As GridResizingColsEventArgs) If e.Reason = GridResizeCellsReason.DoubleClick Then Me.GridControl1.ColWidths.ResizeToFit( Me.GridControl1.ViewLayout.VisibleCellsRange.IntersectRange(e.Cols), False, True) e.Cancel = True End If End Sub ’GridResizingColumns
AC
Aaron Ching
August 25, 2003 09:50 PM UTC
Thanks very much as always.
SIGN IN To post a reply.
- 5 Replies
- 3 Participants
-
JI Jimmy
- Aug 22, 2003 05:26 AM UTC
- Aug 25, 2003 09:50 PM UTC