Hello everybody,
I've used the ExtendedRowExpander class I found on the forum so as to make cascading grids.
I have only put only grid (sub-grid) under the main one, I have no problems, it works well.
But if I put another grid (sub-sub-grid) under the one (sub-grid) under the main one, I have some problems.
There is a "$(body)" that is not supposed to be here. I have to click on the expander to make it disappear and the sub-sub-grid appear.
I have attached an image to this message that shows my problem.
And here is the ExtendedRowExpander class code.
Do you have an idea of how I could make the "$(body)" disappear?
Thanks for your help,
Romain
public class ExtendedRowExpander extends RowExpander
{
private Widget contentWidget;
private LayoutContainer contentContainer;
public ExtendedRowExpander()
{
}
protected boolean beforeExpand(ModelData model, Element body, El row, int rowIndex)
{
RowExpanderEvent e = new RowExpanderEvent(this);
e.setModel(model);
e.setRowIndex(rowIndex);
e.setBodyElement(body);
e.setRowExpander(this);
if (fireEvent(Events.BeforeExpand, e))
{
if (contentWidget != null)
{
body.setInnerHTML(getBodyContent(model, rowIndex));
// body.setInnerHTML("");
contentContainer = new LayoutContainer();
contentContainer.add(contentWidget, new RowData(1, -1));
contentContainer.render(body);
contentContainer.layout(true);
if (!contentContainer.isAttached())
{
ComponentHelper.doAttach(contentContainer);
}
this.grid.addListener(Events.Detach, new Listener<BaseEvent>()
{
public void handleEvent(BaseEvent be)
{
if (contentContainer.isAttached())
{
ComponentHelper.doDetach(contentContainer);
}
}
});
}
return true;
}
return false;
}
public Widget getContentWidget()
{
return contentWidget;
}
public void setContentWidget(Widget contentWidget)
{
this.contentWidget = contentWidget;
}
}
/* id column */
ColumnConfig col = new ColumnConfig(TechnicalStat.FIELD_ID, "id", 200);
col.setSortable(true);
col.setMenuDisabled(true);
col.setResizable(true);
columns.add(col);
AutoHeightGrid<TestData> grid = new AutoHeightGrid<TestData>(statStore,
new ColumnModel(columns));
grid.setAutoWidth(true);
grid.setAutoHeight(true);
grid.disableTextSelection(true);
grid.setBorders(true);
grid.setTrackMouseOver(false);
grid.setAutoExpandColumn("id");
grid.addPlugin(expander);
Has anyone found a solution to this? When using a RowExpander with a grid that has disableTextSelection(false), it will not copy the rows that are not displayed, and instead inserts this text into the clipboard: ${body}. I don't really need those expanded rows; but I don't like the ${body} tag being inserted into the copied text.