smartgwt の TileGrid を使用します。TileGrid には 300 レコードが含まれます。たとえば、150 件のレコードを選択して、別のページに移動します。この TileGrid を Canvas に配置し、Canvas をモデルに配置します。前のページに戻ると、モデルから Canvas (および TileGrid) を描画しています。TileGrid には最初の行が表示されますが、マウス スクロールを使用すると、以前に選択したレコードに TileGrid が配置されます。古いレコードにすぐに配置された古いページに戻るにはどうすればよいですか
メソッド「getCentr(false)」には、抽象メソッド「getElement()」が含まれています。メソッド「getShapka()」、「getPodval()」は Vlayout を返します。クラス NewHolst はテンプレート ビューです。
public class VakansiSearchLayout extends NewHolst{
private List<ProfessiaBean> profBean = new ArrayList<ProfessiaBean>();
private List<ProfessiaBean> profBeanBufer = new ArrayList<ProfessiaBean>();
private VLayout content;
private TileGrid tileGrid;
public VakansiSearchLayout(MenuItem curentMenuItem, INotifier notifer)
{
super(curentMenuItem, notifer);
if (ModelVakansi.INST.getBuffer() == null)
poluchitProf();
else
{
content = (VLayout) ModelVakansi.INST.getBuffer();
tileGrid = (TileGrid) content.getMember(0);
}
{
addMember(getShapka());
addMember(getCentr(false));
addChild(getPodval());
}
if (ModelVakansi.INST.getBuffer() != null)
{
ModelVakansi.INST.setBuffer(null);
}
}
private void poluchitProf()
{
addDrawHandler(new DrawHandler()
{
@Override
public void onDraw(DrawEvent event)
{
// TODO Auto-generated method stub
SGWTRPCServletWithProgress.run(new Callback<List<ProfessiaBean>>()
{
@Override
public void run(List<ProfessiaBean> result)
{
if (result != null)
{
if (result.isEmpty())
{
}
else
{
profBean = result;
content.removeMembers(content.getMembers());
content.addMember(lookProf());
}
}
else
{
GuiContextInst.getInst().showWarn("Error");
}
}
@Override
public void error(Throwable caught)
{
check(caught);
}
private void check(Throwable caught)
{
runError(caught);
}
}, "wait", Actions.PROF, "");
}
});
}
@Override
protected Canvas getElement()
{
if (ModelVakansi.INST.getBuffer() != null)
{
// content = (VLayout) ModelVakansi.INST.getBuffer();
return content;
}
else
{
content = new VLayout();
content.setWidth100();
content.setHeight(centrHght+20);
content.setOverflow(Overflow.AUTO);
content.addMember(lookProf());
content.setScrollbarSize(0);
return content;
}
}
private Canvas lookProf()
{
tileGrid = new TileGrid();
tileGrid.setWidth(centrWdth + centrBlock);
tileGrid.setHeight(centrHght+20);
tileGrid.setTileWidth(370);
tileGrid.setTileHeight(92);
tileGrid.setStyleName("label_prof");
tileGrid.setCanReorderTiles(true);
tileGrid.setCanFocus(true);
tileGrid.setShowAllRecords(false);
tileGrid.setAutoFetchData(true);
tileGrid.setAnimateTileChange(true);
tileGrid.setData(getRecords());
tileGrid.setWrapValues(true);
tileGrid.setScrollbarSize(0);
tileGrid.setBorder("0px");
tileGrid.addClickHandler(new ClickHandler()
{
@Override
public void onClick(ClickEvent event)
{
ModelVakansi.INST.setBuffer(content);
notifer.notifyListeners(new Event(ru.my.web.client.Event.SELECT_PROF,
tileGrid.getSelectedRecord().getAttributeAsObject("code").toString()));
}
});
DetailViewerField name = new DetailViewerField("name");
tileGrid.setFields(name);
tileGrid.sortByProperty("name", true);
return tileGrid;
}
private ProfRecord[] getRecords()
{
int i = 0;
ProfRecord result[] = new ProfRecord[profBean.size()];
for (ProfessiaBean oneProfe : profBean)
{
result[i] = new ProfRecord(oneProfe.getName().toUpperCase(), oneProfe.getCode());
i++;
}
return result;
}
@Override
public void scrolToIframe(String id, int i)
{
tileGrid.scrollBy(0, i);
}}