diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridView.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridView.java index f07ff34088..6083bb24bc 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridView.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridView.java @@ -84,6 +84,8 @@ public class GridView extends Vbox implements EventListener, IdSpace, IFi private static final int MIN_NUMERIC_COL_WIDTH = 130; + private static final String ATTR_ON_POST_SELECTED_ROW_CHANGED = "org.adempiere.webui.adwindow.GridView.onPostSelectedRowChanged"; + private Grid listbox = null; private int pageSize = DEFAULT_PAGE_SIZE; @@ -324,7 +326,7 @@ public class GridView extends Vbox implements EventListener, IdSpace, IFi } } else if (rowIndex == renderer.getCurrentRowIndex()){ if (modeless && !renderer.isEditing()) - Events.echoEvent("onPostSelectedRowChanged", this, null); + echoOnPostSelectedRowChanged(); return; } else { if (renderer.isEditing()) { @@ -348,15 +350,25 @@ public class GridView extends Vbox implements EventListener, IdSpace, IFi gridFooter.setVisible(true); } if (rowIndex >= 0 && pgIndex >= 0) { - Events.echoEvent("onPostSelectedRowChanged", this, null); + echoOnPostSelectedRowChanged(); } } else { if (rowIndex >= 0) { - Events.echoEvent("onPostSelectedRowChanged", this, null); + echoOnPostSelectedRowChanged(); } } } + /** + * + */ + protected void echoOnPostSelectedRowChanged() { + if (getAttribute(ATTR_ON_POST_SELECTED_ROW_CHANGED) == null) { + setAttribute(ATTR_ON_POST_SELECTED_ROW_CHANGED, Boolean.TRUE); + Events.echoEvent("onPostSelectedRowChanged", this, null); + } + } + /** * set paging size * @param pageSize @@ -567,6 +579,7 @@ public class GridView extends Vbox implements EventListener, IdSpace, IFi * Event after the current selected row change */ public void onPostSelectedRowChanged() { + removeAttribute(ATTR_ON_POST_SELECTED_ROW_CHANGED); if (listbox.getRows().getChildren().isEmpty()) return;