terciofilho
27 Aug 2009, 12:37 PM
I need to get every Cell widget in a Grid, I did this:
this.grid.addListener(Events.ViewReady, new com.extjs.gxt.ui.client.event.Listener<GridEvent<ModelData>>()
{
public void handleEvent(final GridEvent<ModelData> be)
{
final int columns = be.getGrid().getColumnModel().getColumnCount();
final int[] maxWidth = new int[columns];
for (int i = 0; i < columns; i++)
{
System.out.println("Column: " + i);
for (int j = 0; j < tableStore.getCount(); j++)
{
System.out.println("Row: " + j);
final Widget cellWidget = be.getGrid().getView().getWidget(j, i);
if (cellWidget != null)
{
if (cellWidget instanceof Html)
{
final String myHtml = ((Html) cellWidget).getHtml();
final int width = TextMetrics.get().getWidth(myHtml);
if (width > maxWidth[i])
{
maxWidth[i] = width;
}
}
}
else
{
System.out.println("Widget null!");
}
}
}
for (int i = 0; i < maxWidth.length; i++)
{
System.out.println(i + "=" + maxWidth[i]);
}
}
});
But all I get is a null widget.
What I'm doing wrong?
Thanks.
this.grid.addListener(Events.ViewReady, new com.extjs.gxt.ui.client.event.Listener<GridEvent<ModelData>>()
{
public void handleEvent(final GridEvent<ModelData> be)
{
final int columns = be.getGrid().getColumnModel().getColumnCount();
final int[] maxWidth = new int[columns];
for (int i = 0; i < columns; i++)
{
System.out.println("Column: " + i);
for (int j = 0; j < tableStore.getCount(); j++)
{
System.out.println("Row: " + j);
final Widget cellWidget = be.getGrid().getView().getWidget(j, i);
if (cellWidget != null)
{
if (cellWidget instanceof Html)
{
final String myHtml = ((Html) cellWidget).getHtml();
final int width = TextMetrics.get().getWidth(myHtml);
if (width > maxWidth[i])
{
maxWidth[i] = width;
}
}
}
else
{
System.out.println("Widget null!");
}
}
}
for (int i = 0; i < maxWidth.length; i++)
{
System.out.println(i + "=" + maxWidth[i]);
}
}
});
But all I get is a null widget.
What I'm doing wrong?
Thanks.