Grid 渲染ZK后的网格滚动
在模型设置完成后,我试图向下滚动到网格的底部Grid 渲染ZK后的网格滚动,grid,zk,Grid,Zk,在模型设置完成后,我试图向下滚动到网格的底部 myGrid.addEventListener(ZulEvents.ON_AFTER_RENDER, new EventListener<Event>() { public void onEvent(Event event) throws Exception { Clients.evalJavaScript("var gridEle = document.getElementByI
myGrid.addEventListener(ZulEvents.ON_AFTER_RENDER, new EventListener<Event>() {
public void onEvent(Event event) throws Exception
{
Clients.evalJavaScript("var gridEle = document.getElementById('"+myGrid.getUuid()+"-body"+"'); gridEle.scrollTop = gridEle.scrollHeight;alert(gridEle.scrollHeight);");
}
});
1) 我设置了模型:
myGrid.setModel(new ListModelList<Object>(myList));
myGrid.setModel(新的ListModelList(myList));
2) 我覆盖行渲染器
myGrid.setRowRenderer(new RowRenderer<Object>() {
@Override
public synchronized void render(Row row,final Object data, int index) throws Exception {
row.setStyle("commonCellPadding");
.
.
.
row.appendChild(htmlMessage);
}
});
myGrid.setRowRenderer(新的RowRenderer(){
@凌驾
公共同步的void呈现(行、最终对象数据、int索引)引发异常{
行设置样式(“commonCellPadding”);
.
.
.
行.appendChild(htmlMessage);
}
});
3) 最后,如果用于设置模型的列表太大(在.zul中的网格具有固定高度),我希望显示最后的结果(在本例中,最近的结果越多)。
我需要在渲染后自动向下滚动。我该怎么做
我尝试过的事情
a) 在渲染后调用javascript函数,这不起作用,因为gridEle.scrollHeight属性返回zul中设置的网格的固定高度(如果不是,则返回0),而不是模型设置后的网格高度
myGrid.addEventListener(ZulEvents.ON_AFTER_RENDER, new EventListener<Event>() {
public void onEvent(Event event) throws Exception
{
Clients.evalJavaScript("var gridEle = document.getElementById('"+myGrid.getUuid()+"-body"+"'); gridEle.scrollTop = gridEle.scrollHeight;alert(gridEle.scrollHeight);");
}
});
myGrid.addEventListener(ZulEvents.ON_渲染后,新建EventListener()){
public void onEvent(事件)引发异常
{
Clients.evalJavaScript(“var gridEle=document.getElementById(“+myGrid.getUuid()+”-body“+”);gridEle.scrollTop=gridEle.scrollHeight;alert(gridEle.scrollHeight);”;
}
});
为什么不先对myList进行降序排序,使最后一行成为控制滚动条的第一行?在我看来,这将更加容易,并且与用户体验相匹配。只需调用
Clients.scrollIntoView(rows.getLastChild())代码>设置模型和行渲染器后(提供的行
是行组件id,并且已经自动连接到控制器中)。查看zkfiddle和
更新:客户端。如果使用该功能,scrollIntoView(组件)
将不起作用,因为如果要滚动到的行在初始页面加载时不会被加载,则很自然。该代码用于webchat,通常接收或发送的最后一条消息显示在窗口底部。如果聊天记录有历史记录(已经开始显示消息),我希望将窗口滚动到底,以显示对话中的最后一条消息。您是否尝试了我提出的以下建议?我尝试了,但没有成功,可能是按需渲染,当我有时间休息时,我将继续研究。