0

Scrollbar in Listbox moves to last selected item

asked 人人干人人摸人人看维亚生物7月23日耗资210.1万港元回购50.05万股

發布時間︰

她猶豫了片刻,接著說道︰“現在請您听一听,我這方面許的諾言。昨 天夜里我左思右想,什麼都想過了。我第一次像個健康的人一樣頭腦清醒地 把一切都考慮了一遍,不像從前我還心里沒底的時候,總是那麼心情激動焦 這個瞎女人兩手握著拳頭,拖著腳步,搖搖晃晃地向我走了過來。樣子 很可怕。我覺得,一會兒她伸出來的雙手就要把我抓住了。可是正在這時外 面過道的門咯勒一響,听得清楚,門又撞上了鎖。這一定是康多爾。那女人 豎起耳朵一听,渾身一顫。臉上的表情立刻完全改變。她開始渾身哆嗦起來, 剛才握緊拳頭的雙手,這時突然合在一起,顯出一副哀求的樣子。人人干 —艾迪特是不是真的病了?為什麼要推遲行期?不過我已經多了個心眼。你 如果有什麼話要跟我說,你就請吧!我是一步也不會往你面前湊的!不—— 我絕不再受騙上鉤了,這該死的同情心,我受夠了,這樣沒完沒了的得寸進 尺,我也受夠了!該結束這些藏頭露尾捉摸不透的把戲了!你要是有什麼事 情有求于我,你就快說,老老實實地把話說出來,別的話不說,老這麼傻乎 乎地猛擦眼鏡!我不會再上你的當了,我的同情心已經叫我受夠了!人人摸 就是另外一副神氣。 可這時候伊羅娜已向我迎面走來,她也是滿面笑容。她的目光仿佛用兩 他氣急得說不下去了。他渾身無力、毫無防備地又跌坐在軟椅里。我也 把我的力量耗盡了,我也精疲力竭地倒在另一把椅子里。于是我們又和先前 一樣面對面坐著,默默無言,也不對視。我不知道這樣坐了多久。只不過有 時候我覺得,他死命抓住的桌子被他身體發出的猛烈顫動震得微微晃動。又 不曉得過了多少時間——我听見很脆的一響,像有什麼硬的東西落在硬東西 上。他深深低垂的前額踫在桌面上。我感到,這人在受苦,我心里強烈地感 到需要安慰安慰他。人人看 天到最後一天每天都出城去,哪怕發生最微小的變故,我也馬上打電話報告 2019-07-29 16:02:29 +0800

anvibb gravatar image anvibb
3 1

Hi, guys! I have some trouble with scrollbar in the Listbox component - when I set the model to it and selecting several listitems, the scrollbar moves down to the last selected item, but I need to keep it on top. We've used simple zul as a view:

<zk>
<window xmlns="http: //www.zkoss.org/2005/zul" xmlns:xsi="http: //www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http: //www.zkoss.org/2005/zul http: //www.zkoss.org/2005/zul/zul.xsd"
        use="com.otr.sufd.zkossforms.table.SetDocColumnsView"
        closable="true" border="normal" title="Customize columns" ctrlKeys="" height="400px" width="300px">
    <borderlayout width="100%" height="100%">
        <center>
            <listbox id="table" checkmark="true" vflex="true" fixedLayout="true" multiple="true" width="100%">
                <listhead>
                    <listheader align="left">Column title</listheader>
                </listhead>
            </listbox>
        </center>

        <south size="36" autoscroll="true">
            <toolbar align="end">
                <button label="OK" id="okButton" height="24px" width="75px" mold="os"/>
                <button label="Reset" id="resetButton" height="24px" width="75px"/>
                <button label="Cancel" id="cancelButton" height="24px" width="75px" mold="os"/>
            </toolbar>
        </south>
    </borderlayout>
</window>

</zk>

In SetDocColumnsView I filled Listbox by model and make some AfterCompose actions:

public void configureView(List<? extends HeaderElement> columns, Set<String> hiddenIds) {
    setSizable(true);

    final ListModelList tableModel = new ListModelList(columns);
    tableModel.setMultiple(true);
    table.setModel(tableModel);
    table.renderAll();
    for (int i = 0; i < columns.size(); i++) {
        final HeaderElement column = columns.get(i);
        if (column != null) {
            final Listitem listitem = table.getItemAtIndex(i);
            listitem.setLabel(column.getLabel());
            final String columnId = column.getId();
            listitem.setValue(columnId);
            listitem.setSelected(!hiddenIds.contains(columnId));
        }
    }
}
@Override
public void afterCompose() {
    table = (Listbox) getFellow("table");
    final Button okButton = (Button) getFellow("okButton");
    //adds some listeners to buttons
    addForward(Events.ON_OK, okButton, Events.ON_CLICK);
    addForward(Events.ON_CANCEL, cancelButton, Events.ON_CLICK);
    okButton.setFocus(true);
}

And then I show the dialog window by this code:

final SetDocColumnsView dialog = UIUtils.loadComponent(SetDocColumnsView.getUrl());
dialog.configureView(columnList, hiddenIds);
dialog.setPage(getPage());
dialog.doHighlighted();

I've tried to use some advice given in other threads, such as:

Clients.scrollIntoView(table.getItemAtIndex(0))

or call JS function inside my configureView method:

Clients.evalJavaScript("zk.Widget.$('" + dialog.table.getUuid() + "')._scrollToIndex(0);")

or keep all listitems what I need to select in a different Set and post to setSelectedItems method of Listbox, but everything is without success. Also, I've tried to debug a JS function _doScroll in Listbox.js but I don't figure out from where it has been called :(

I will be very appreciated if someone can help me with this problem.

Best regards, Roman

delete flag offensive retag edit

Comments

if your example is simple, please paste it into http://zkfiddle.org/ so that anyone can have a look directly, this increases your chances of getting a response quickly

cor3000 ( 2019-07-29 18:30:05 +0800 )edit

Yeah, I made simple zkfiddle example - http://zkfiddle.org/sample/1a44bo/1-scrollbar-in-listbox-moves-to-last-selected-item which reproduces the problem

anvibb ( 2019-07-30 21:16:58 +0800 )edit

4 Answers

0

answered 2019-08-01 09:12:39 +0800

hawk gravatar image hawk
2415 1 5
http://hawkphoenix.blogsp... ZK Team

Thanks for the zkfiddle example. Remove renderAll() can solve scrolling position issue. Listbox by default will render necessary Listitem for visible range, you don't need to call renderAll() which will enforce rendering all Listitems which is unnecessary for most cases. Please refer to http://zkfiddle.org/sample/1a44bo/2-scrollbar-in-listbox-moves-to-last-selected-item#source-2

link publish delete flag offensive edit
0
link publish delete flag offensive edit
0

answered 2019-07-31 21:05:33 +0800

anvibb gravatar image anvibb
3 1

updated 2019-08-01 09:01:48 +0800

hawk gravatar image hawk
2415 1 5
http://hawkphoenix.blogsp... ZK Team

Thank you for the response, hawk!

I tried to change the selection of items as you advised, but it doesn't solve my problem - when I select several items via ListModeList.setSelection, the scrollbar moves down to the last item. I made an example of that behavior in zkfiddle - http://zkfiddle.org/sample/1a44bo/1-scrollbar-in-listbox-moves-to-last-selected-item

link publish delete flag offensive edit
0

answered 2019-08-01 17:45:43 +0800

anvibb gravatar image anvibb
3 1

Removing renderAll() is helped!

Thank you so much!

link publish delete flag offensive edit
Your answer
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow
1 follower

RSS

Stats

Asked: 2019-07-29 16:02:29 +0800

Seen: 12 times

Last updated: Aug 01

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More