0

scrollbar listner for 2 grid [closed]

asked 2013-02-06 05:12:30 +0800

mujawarv gravatar image mujawarv flag of India
45 4

how can i synchronize scroll-bar listener horizontal for 2 grid which have frozen column each.
i used code below which works for without frozen column but not working with frozen.

<zk>
    <zscript>Object[] o = new Object[50];</zscript>
    <div>
        <grid id="grid1"   height="100px">
        <frozen columns="1">

        </frozen>
            <columns>
            <column label="c1" ></column>
            <column label="c2"  width="50px"></column>
            <column label="c3"  width="50px"></column>
            <column label="c4"  width="50px"></column>
            </columns>
            <rows>
                <row forEach="${o }">
                    <label value="item ${forEachStatus.index}"/>
                    <label value="c1 ${forEachStatus.index}"/>
                    <label value="c2 ${forEachStatus.index}"/>
                    <label value="c3 ${forEachStatus.index}"/>
                </row>
            </rows>
        </grid>
        <grid id="grid2" height="100px">
        <frozen columns="1">

        </frozen>
        <columns>
        <column label="c1" ></column>
        <column label="c2"  width="50px"></column>
        <column label="c3"  width="50px"></column>
        <column label="c4"  width="50px"></column>
        </columns>
            <rows>
                <row forEach="${o}">
                    <label value="item ${forEachStatus.index}"/>
                    <label value="c1 ${forEachStatus.index}"/>
                    <label value="c2 ${forEachStatus.index}"/>
                    <label value="c3 ${forEachStatus.index}"/>
                </row>
            </rows>
        </grid>
    </div>
    <zscript><![CDATA[
    grid2.setWidgetListener("onScroll", "this.$f('grid1').ebody.scrollTop = this.ebody.scrollTop;");
    grid1.setWidgetListener("onScroll", "this.$f('grid2').ebody.scrollLeft = this.ebody.scrollLeft;");
    ]]></zscript>
    <!--


    grid1.setWidgetListener("onScroll", "this.$f('grid2').ebody.scrollRight = this.ebody.scrollRight;alert(this.ebody.scrollLeft)");

    -->
</zk>
delete flag offensive retag edit

The question has been closed for the following reason "the question is answered, right answer was accepted" by sjoshi
close date 2013-02-08 05:47:38

1 Answer

Sort by ยป oldest newest most voted
0

answered 2013-02-07 01:26:03 +0800

jumperchen gravatar image jumperchen
3909 2 8
http://jumperchen.blogspo... ZK Team

Try to use Javascript to do so.

For example

<script><![CDATA[
zk.afterMount(function () {
    var frozen1 = zk.Widget.$('$grid1').frozen,
        frozen2 = zk.Widget.$('$grid2').frozen;

    jq(frozen1.$n('scrollX')).scroll(function () {
        setTimeout(function() {
            frozen2.setStart(frozen1.getStart());
            frozen2.syncScroll();
        }, 100);
    });
    jq(frozen2.$n('scrollX')).scroll(function () {
        setTimeout(function() {
            frozen1.setStart(frozen2.getStart());
            frozen1.syncScroll();
        }, 100);
    });
});
]]></script>
link publish delete flag offensive edit

Comments

thanks jumperchen , its working but problem is that in my project grid display after some action from user in another tab , so script is not working . How can i load script after any event from user.

mujawarv ( 2013-02-07 07:06:46 +0800 )edit

you could compress this script in one line and use Clients.evalJavaScript() to run the code without zk.afterMount(), for example (function() {.............})(); // runnable function

jumperchen ( 2013-02-07 08:23:58 +0800 )edit

Again thanks . You r a genius .

mujawarv ( 2013-02-07 09:04:49 +0800 )edit

Question tools

Follow
2 followers

RSS

Stats

Asked: 2013-02-06 05:12:30 +0800

Seen: 33 times

Last updated: Feb 07 '13

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