I would like to customise the GroupByRows in my grid so that they look like DataRows. It looks like I will have to do this by implementing the IUIElementCreationFilter interface. However, I don't have any idea where to start when it actually comes to drawing the appropriate columns and writing the header text.
Also, when my data I grouped I would only like the column headers to appear once at the top of the grid and not at every grouping level.
Thanks in advance.
Hi Jay,
Re-creating an entire row with a CreationFilter is a huge task and should not be undertaken lightly. You are talking about several days work here, at least. It's probably not worth the effort unless you can't acheive what you want in any other way.
What exactly do you mean when you say you want the GroupByRow to look like a regular row? A GroupByRow only has a single value, it doesn't really have values for any of the other cells. So what would it look like if it were a regular row?
Regarding the column header, I think you are looking for the HeaderPlacement property on the Override.
Mike,
Please find attached a screenshot of my grid. This is the default view our users will probably have.
I am using v5.2 btw.
Thanks
Jay
1. You might try using the HeaderPlacement property on the Override. I think it will let you dislpay a set of fixed headers at the top of the grid.
2. You can apply appearances to the SummarySettings.
3. It looks like you are setting GroupBySummaryDisplayStyle to SummaryCellsAlwaysBelowDescription instead of SummaryCells
For questions 1 and 3, I'm not sure if these properties exist in v5.2. I suspect they were added later, so you will need to upgrade to a newer version in order to use them.
I have upgraded to 7.1 and the format is even worse (Please see attached screen shoot)
HeaderPlacement is set to FixedOnTop which is what I was looking for, but why do headers B,C,D not line up with the columns? The padding is in the wrong place.
GroupBySummaryDisplayStyle is SummaryCells and I am shocked at the layout. It was bad in 5.3 but this is totally unusable. I want my totals to look like a normal horizontal row of data.
Please help otherwise we are going to have to use a different grid.
What's the error?
I really don't think using a CreationFilter is going to work here. Simply stick a RowUIElement into the GroupByRowUIElement is not going to do what you want it to do. It would be easier for you to use a DrawFilter and draw the entire row yourself than to do it the way you are trying to do it.
Sorry, I'm not trying to be evasive, but your question seems to imply that you think this is a very simple matter of just sticking the right elements into the right place. It is far more complex than that. A RowUIElement is going to require a row to work with and may also rely on being the child f particular parent elements. Then you have the cell elements, which are going to rely on row and cell objects which are not going to exist. What you're trying to do here is really not a viable solution in my opinion.
I think you are better of reporting this to Infragistics so they can get it fixed.
Hi Mike,
Can you tell me how to add a RowUIElement to a GroupByRowUIElement? I've tried adding a RowUIElement to several other container elements after using UIElementViewer to see the hierarchy but get a error.
Kind regards
This is really weird. I don't know why the summaries are stacked vertically instead of horizontally being aligned with the column headers. My guess is that this is a bug. You should send a small sample applicaton which demonstrates this behavior to Infragistics Developer Support. Get Help
I have created a CreationFilter and am going to try and recreate a DataRow in the GroupByRow. I assume this is possible?
Here is the code I have written so far:
public bool BeforeCreateChildElements(Infragistics.Win.UIElement parent) { if (parent is GroupByRowUIElement) { RowUIElement rowUIElement; CellUIElement cellUIElement; RowCellAreaUIElement rowCellAreaUIElement; // Create a row rowUIElement = new RowUIElement(parent); parent.ChildElements.Add(rowUIElement); // Create row cell area element rowCellAreaUIElement = new RowCellAreaUIElement(parent); // Add row cell area element to row rowUIElement.ChildElements.Add(rowCellAreaUIElement); // Create cell cellUIElement = new CellUIElement(rowUIElement, ((GroupByRowUIElement)parent).GroupByRow.Column); // Add cell to row cell area element rowCellAreaUIElement.ChildElements.Add(cellUIElement); return true; } return false; }
However, I get an error:
System.NullReferenceException: Object reference not set to an instance of an object. at Infragistics.Win.UltraWinGrid.RowUIElementBase.PositionChildElements() at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UltraWinGrid.RowColRegionIntersectionUIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UltraWinGrid.DataAreaUIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UltraWinGrid.UltraGridUIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UIElement.VerifyChildElements(Boolean recursive) at Infragistics.Win.ControlUIElementBase.VerifyIfElementsChanged(Boolean verify, Boolean syncMouseEntered) at Infragistics.Win.ControlUIElementBase.ProcessMouseMoveHelper(Object sender, MouseEventArgs e) at Infragistics.Win.ControlUIElementBase.ProcessMouseMove(Object sender, MouseEventArgs e)
Please can you tell me what else needs to be set?