The tables are not setup perfectly with foreign keys and such.So the user can remove or alter values in the column recordset. For maximum performance, use programmatic resizing instead so that you can resize at specific times, such as immediately after new data is loaded. To avoid performance penalties, use the automatic sizing modes that calculate sizes based only on the displayed rows rather than analyzing every row in the control. Use content-based automatic resizing with caution when working with large amounts of data.
For example, if rows but not columns are configured for automatic sizing and Wrap Mode is enabled, users can drag column dividers to change the width of a column and row heights will automatically adjust so that cell contents are still fully displayed. For example, if a column is hidden after it is automatically sized to fit a large cell value, the hidden column will not change its size if the row containing the large cell value is deleted. Content-based automatic sizing modes do not affect rows, columns, or headers that you have hidden by setting the row or column Visible property or the control Row Headers Visible or Column Headers Visible properties to false. Programmatic content-based resizing affects rows, columns, and headers regardless of their visibility. Automatic sizing does not occur when visibility changes, so changing the column Visible property back to true will not force it to recalculate its size based on its current contents.