首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dojo网格不滚动到最后一项

Dojo网格不滚动到最后一项
EN

Stack Overflow用户
提问于 2014-01-05 23:16:58
回答 1查看 1K关注 0票数 1

我正在通过构建一个非常基本的基于web的聊天应用程序来教自己javascript。

聊天消息被发布到web服务器。HTML聊天客户端定期轮询web服务器以下载任何新消息。

聊天消息使用dojo网格显示。

我的问题是我不能滚动网格到最后一条消息。我试过使用scrollToRow,但它不起作用。

javascript代码在这里,=>

代码语言:javascript
复制
<html>  
<head>
    <style type="text/css">
        @import "./dojoroot/dojo/resources/dojo.css";
        @import "./dojoroot/dijit/themes/tundra/tundra.css";
        @import "./dojoroot/dojox/grid/resources/Grid.css";
        @import "./dojoroot/dojox/grid/resources/tundraGrid.css";
        .input {
            width: 100%;
            padding: 0;
            text-align: justify;
        }
        .dojoxGridHeader {
            display: none;
        }
    </style>

    <script language="JavaScript" src="./dojoroot/dojo/dojo.js" djConfig="isDebug: false, parseOnLoad: true">
    </script>
    <script type="text/Javascript">
        dojo.require("dojo.parser");
        dojo.require("dojo.dom-style");
        dojo.require("dojox.grid.DataGrid");
        dojo.require("dojo.data.ItemFileWriteStore");
        dojo.require("dijit.layout.ContentPane");
        var chatData={items:[]};
        var chatStore=new dojo.data.ItemFileWriteStore({data:chatData});
        var chatLayout=[[{'name':'Sender','field':'sender','width':'10%'},
                         {'name':'Message','field':'message','width':'90%'}]];
        var chatRow=0;
    </script>   
</head>
<body>
    <div align="center">
        <div dojoType="dijit.layout.ContentPane" sizeMin="10" sizeShare="10">
            <div id="gridDiv" style="text-align:left; border: 1px solid #aaa; width:98%; height:80%; overflow:auto;">
            </div>
    </div>

    <script type="text/javascript">
        var grid=new dojox.grid.DataGrid({id:'grid',
                                          store:chatStore,
                                          structure:chatLayout,
                                          rowSelector:'0px'});
        grid.placeAt("gridDiv");
        grid.startup();
        setInterval(listenToServer,250);

        function listenToServer() {
            dojo.xhrGet({
                url: "http://localhost:8080/ChatProject/ListenToServer",
                handleAs: "json",
                load: function(data) {
                    if (data!=null) {
                        if (data.message!="") {
                            var myNewItem = {sender: data.sender, message: data.message};
                            chatRow++;
                            // Insert the new item into the store:
                            // (we use store3 from the example above in this example)
                            chatStore.newItem(myNewItem);
                            chatStore.save();
                            var lastRow=grid.store._arrayOfAllItems.length-1;
                            grid.scrollToRow(lastRow);
                        }
                    }
                }
            });             
        }
    </script>   
</body>
</html>

网格不会向下滚动到最后一条消息。

任何帮助都将不胜感激。

谢谢。

詹姆斯。

EN

回答 1

Stack Overflow用户

发布于 2014-01-11 17:24:40

经过多次实验,我发现了以下问题:

  1. 正在创建两个单独的滚动条--我假设(虽然我不确定)一个滚动条与内容窗格相关联,另一个与网格相关联。对于网格,我设置了溢出:隐藏以克服这一问题。
  2. 高度:80%参数导致网格比周围的内容窗格更大。我把这个改成了高度:250 to。

随着这两个变化,滚动开始工作(几乎)。

此时,我在dataGrid => https://bugs.dojotoolkit.org/ticket/10487中遇到了这个bug。

在这一点上,我继续前进,停止使用dataGrid!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20940481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档