Hi,
I have a grid with resizable columns (either on window size or more commonly content length). Some of my cells need span columns.
I followed this example by IG:
http://devcenter.infragistics.com/Support/KnowledgeBaseArticle.aspx?ArticleID=7325
This gets your (very!) basic cell-based column spanning - quite frankly I think a ColSpan property should be provided so you needn't do all of this. It is easy enough make it work for more than 2 columns. But now I need to resize my columns. The sample provided fails horribly at this (I just docked the grid and set the columns to auto-size -> uh oh!). Now I can _probably_ recalculate all the spanning column widths on every resize event but that seems like a lot of work.
So the question is: Is there a good solution for this?
Thank you,
Teun Segers
This seems to work ok for the moment (based on original IG sample):
public bool BeforeCreateChildElements(UIElement parent)
{ //This boolean is a bit weird - does not work as documented. Just don't try to "fix" it. bool skipCreation = false;
if (parent is CellUIElement) { var cellUI = (CellUIElement)parent; var targetCell = (UltraGridCell)cellUI.GetContext(typeof (UltraGridCell)); var modelCells = UltraGridHelper.GetCellModels(targetCell.Row); var modelCell = modelCells[targetCell.Column.Index];
if (modelCell == null) { cellUI.Rect = new Rectangle(cellUI.Rect.X, cellUI.Rect.Y, 0, 0); skipCreation = true; } else { if (modelCell.ColumnSpan > 1) { var compoundWidth = targetCell.Column.Width; compoundWidth += targetCell.Row.Cells[targetCell.Column.Index + 1].Column.Width; cellUI.Rect = new Rectangle(cellUI.Rect.X, cellUI.Rect.Y, ++compoundWidth, targetCell.Row.Height); } } }
return skipCreation;}
(I tried - at length - to get code to format properly on this forum but it still looks bad... again)
This may not address all the issues I stated but it may help some people.
-EDIT 1-
FYI: UltraGridHelper.GetCellModels(targetCell.Row) looks up the ListObject which has a mark up object in its Tag property. This mark up object is then used to style the cell. It is not a relevant part of this solution but it may help you understand it.
I removed the "code" tags from the post as they made things even less legible.