ST
stanleyj
Syncfusion Team
January 12, 2006 10:04 AM UTC
Hi Mike,
This code will work for nested tables also.
this.gridGroupingControl1.GetTableModel("GrandChildTable").QueryColWidth += new GridRowColSizeEventHandler(TableModel_QueryColWidth);
this.gridGroupingControl1.GetTableModel("ChildTable").QueryColWidth += new GridRowColSizeEventHandler(TableModel_QueryColWidth);
this.gridGroupingControl1.TableModel.QueryColWidth += new GridRowColSizeEventHandler(TableModel_QueryColWidth);
int indentCols;
int ParentIndentColsCount;
int ChildIndentColsCount;
private void TableModel_QueryColWidth(object sender, GridRowColSizeEventArgs e)
{
GridTableModel gridModel = sender as GridTableModel;
GridTableControl grid = (GridTableControl) gridModel.ActiveGridView;
if (gridModel != null && grid != null)
{
int availableArea;
indentCols = gridModel.GetColumnIndentCount() * gridGroupingControl1.TableOptions.IndentWidth;
if(grid.TableDescriptor.Name == "GrandChildTable")
{
if(e.Index > gridModel.Cols.HeaderCount + gridModel.GetColumnIndentCount()-1)
{
availableArea = gridGroupingControl1.ClientSize.Width - gridModel.ColWidths.GetTotal(0, gridModel.Cols.HeaderCount)- indentCols - ParentIndentColsCount* gridGroupingControl1.TableOptions.IndentWidth - ChildIndentColsCount* gridGroupingControl1.TableOptions.IndentWidth;
e.Size = (int)availableArea / (gridModel.ColCount-gridModel.GetColumnIndentCount()-1);
e.Handled = true;
}
}
else if(grid.TableDescriptor.Name == "ChildTable")
{
int startQueryFrom = gridModel.Cols.HeaderCount + gridModel.GetColumnIndentCount()-1;
if(e.Index > startQueryFrom)
{
ChildIndentColsCount = gridModel.GetColumnIndentCount();
availableArea = gridGroupingControl1.ClientSize.Width - gridModel.ColWidths.GetTotal(0,gridModel.Cols.HeaderCount) - indentCols - ParentIndentColsCount* gridGroupingControl1.TableOptions.IndentWidth;
e.Size = (int)availableArea / (gridModel.ColCount-gridModel.GetColumnIndentCount());
e.Handled = true;
}
}
else
{
if(e.Index > gridModel.Cols.HeaderCount + gridModel.GetColumnIndentCount()-1)
{
ParentIndentColsCount = gridModel.GetColumnIndentCount();
availableArea = gridGroupingControl1.ClientSize.Width - SystemInformation.VerticalScrollBarWidth - indentCols;
e.Size = (int)availableArea / (gridModel.ColCount-gridModel.GetColumnIndentCount());
e.Handled = true;
}
}
}
}
Best regards,
Stanley