浏览 2757 次
锁定老帖子 主题:TableLayout设计考虑不周的地方
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-07
最后修改:2010-07-07
正常情况: 错误演示: 先Check同事写的代码 // Panel在进行翻页的时候, 先移除了所有的子元素 panel.removeAll(); // 然后再添加了新页面的子Panel for (var i = 0; i < len; i++) { // ...演示环境省略代码... panel.add(new Ext.Panel({})); } panel.doLayout(); 用FireBug一看, 有一个空白的TD占位; 原来是Ext.Container在remove子元素时, 并没有把table里面的TR和TD给移除掉, 导致了这个错误; 举例说明 假如我们有一个3*3的Panel, 每页显示9条数据, 和我例子里面的图显示一样, 共3页, 前两页都是9条数据, 第三页只有1条数据; 当第一页时, 正常显示; 翻第二页, 执行上面的动作, 先移除Panel的子元素, 然后再增加新的子元素; 这时你使用Firebug能看到一个现象, 前面会有9个空的TD, 这9个TD就是装载第一页内容的TD容器, 在移除的时候并没有把TD移除掉; 翻第三页, 由于第三页只有一条记录, 第三页只会增加一个TD; 当往回翻页时, 问题出现了, 新页内容的位置就会被第三页的TD给挤掉, 就出现了这样的现象了. 修改方法 // 移除table旧tbody节点 Ext.fly(panel.layout.table).child('tbody').remove(); // 重新创建一个 Ext.fly(panel.layout.table).createChild({tag: 'tbody'}); // 重置table的内存变量 panel.layout.currentRow = 0; panel.layout.currentColumn = 0; panel.layout.cells = []; 后记 我觉的官方TableLayout应该提供一个刷新table的函数, 这样就省去很多麻烦了. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |