グリッドとJavaのクラスを使用してデータを行にレンダリングしていますが、すべて正常に機能し、データはグリッドに表示されますが、データをグリッドにレンダリングするボタンを2回クリックすると問題が発生します、データはまだそこにあり、新しいデータが行に追加されます。私は使用していますJboss 4.2
これは RowRender Java クラスです。
import org.zkoss.zul.Label;
import org.zkoss.zul.Row;
import org.zkoss.zul.RowRenderer;
public class MyRowRenderer implements RowRenderer<Object> {
@Override
public void render(final Row row, final java.lang.Object data, int arg2)
throws Exception {
String[] ary = (String[]) data;
for(int i=0;i<ary.length;i++){
new Label(ary[i]).setParent(row);
}
}
}
これは、Java クラス リスナーの一部です。
public void onClick$generar(Event e) {
try {
if(fecha.getValue()==null){
Messagebox.show("Ingresa una fecha valida MM-yyyy", "Error", Messagebox.OK, Messagebox.ERROR);
}else{
SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
ffecha = formato.format(fecha.getValue()).substring(0, 7);
String Order = orderby.getSelectedItem().getValue().toString();
String Modo = modo.getSelectedItem().getValue().toString();
inboxGrid.setModel(new ListModelList(getUpdatedData(ffecha, Order, Modo)));
}
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
これは、index.zul の GRID です。
<grid id="inboxGrid" mold="paging" pageSize="15"
rowRenderer="com.app.reports.MyRowRenderer"
emptyMessage="Sin Registros!">
<auxhead>
<auxheader colspan="5" class="topic">
REPORTE MENSUAL
</auxheader>
</auxhead>
<columns>
<column width="100px" label="CLAVE" align="center" />
<column label="SUCURSAL" align="center" />
<column width="100px" label="PAGINAS"
align="center" />
<column width="100px" label="EDO CUENTA"
align="center" />
<column width="100px" label="IMPRESION"
align="center" />
<column width="100px" label="MENSAJERIA"
align="center" />
<column width="100px" label="TOTAL" align="center" />
</columns>
</grid>
最初に 4 つのレコードが表示されました。正しいです。データベースには 4 つのレコードしかありません。2 回目に「一般」ボタンを押すと、8 つのレコード (4x2)inboxGrid.getRows().getChildren().clear()
が表示されました。ボタンを付けてみました。それでも同じ動作を示します。