这是之前我发的一个贴子问题描述:http://q.cnblogs.com/q/53469/

问题:当点击了页面的刷新后,滚动条总是回到了最上面的位置,无法保持与之前的位置一样

解决问题的方法:

在点击Refresh的时候保存verticalScrollPosition 和horizontalScrollPosition 的值, 当刷新完后查询了新的数据后设置dataGrid 的verticalScrollPosition 等于之前保存的值,这个方法原本是正确的,但是在我的UI却一直没有效果。后来想的办法是我设置了一个定时器 private var setScrollPos:Timer = new Timer(50);

当刷新完回到前台处理完数据后,启用这个定时器,调用setScrollPos方法给DataGrid的scrollbar的verticalScrollPosition赋值

这个方法是当查询完数据后返回到前台,前台处理数据的方法

private function enablePanle(e:Event):void
        {
            monitor_grid_container.enabled = true;
            //when completed fetch runs arrived, validate which run should be expand.
            if(isRefresh)
            {
                for each(var runBean:RunBean in model.runBeans)
                {
                    for each(var openRunBean:RunBean in openRunBeans)
                    {
                        if(runBean.wkfName == openRunBean.wkfName)
                            runs_grid_datagrid.expandItem(runBean,true);
                        
                        if(runBean.childRunBeans)
                        {
                            for each(var childRunBean:RunBean in runBean.childRunBeans)
                            {
                                if(openRunBean.wkfName == childRunBean.wkfName)
                                    runs_grid_datagrid.expandItem(childRunBean,true);
                            }
                        }
                    }                            
                }
            }
            refresh_button.enabled = true;
            var hDataProvider:HierarchicalData = new HierarchicalData(model.runBeans);
            hDataProvider.childrenField = "childRunBeans";
            runs_grid_datagrid.dataProvider = hDataProvider;
            if (model.runBeans.length != 0)
                runs_grid_datagrid.contextMenu = buildMatrixContextMenu();
            
            buildInfo();
            setScrollPos.addEventListener(TimerEvent.TIMER, setScollPos);
            setScrollPos.start();
        }

public function setScollPos():void
 {
            arguments;
            runs_grid_datagrid.verticalScrollPosition = myVerPos;
            setScrollPos.stop();
 }

今天又找了一种实现方法,不必声明定时器, flex有一个自带的方法callLater可以实现,关于此方法的学习:http://help.adobe.com/zh_CN/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7b06.html

在我的项目中: 把以上的红色字体的代码改正为 callLater(setScollPos);

Flex UI刷新后保持DataGrid中的ScrollBar的位置不变的更多相关文章

  1. 解决刷新页面vuex store中数据丢失的问题

    **问题背景:**页面刷新后,vuex中的数据丢失.这是因为:js代码是运行在内存中的,代码运行时的所有变量.函数也都是保存在内存中的.进行刷新页面的操作,以前申请的内存被释放,重新加载脚本代码,变量 ...

  2. EF DBContext中DbSet中Hashset添加对象后,DataGrid UI没有刷新的问题

    使用EF4/5添加数据库视图生成DBContext,如果数据表/对象之间有M-N对应关系,EF对自动添加引用类集合,是Hashset类型.由于不是ObservableCellection类型,在引用类 ...

  3. EasyUi DataGrid中数据编辑方式及编辑后数据获取,校验处理

    EasyUi中的DataGrid提供前台编辑的相关函数. 实现客户选中DataGrid中一列后,对选中列中的一个字段进行编辑,并对数据进行实时校验后,传递至后台保存的需求, 主要涉及到DataGrid ...

  4. koa中返回404并且刷新后才正常的解决方案

    概述 这几天学习koa2,有一些心得,记录下来,供以后开发时参考,相信对其他人也有用. 起因 这几天学习koa2,写的代码执行时有一个奇怪的bug:明明能够返回数据,却有时正常返回数据,有时偏偏给你返 ...

  5. IE11浏览器中的My97日历控件刷新后无法打开问题解决办法

    IE11浏览器中的My97日历控件刷新后无法打开问题解决办法   IE11浏览器中的My97日历控件刷新后无法打开问题解决办法:(谷歌浏览器下正常.IE11失效) 解决办法:1:找到WdatePick ...

  6. easyui datagrid 中序列化后的日期格式化

    1.在easyui datagrid 中序列化后的日期显示为:/Date(1433377800000)/ 2.格式化后的显示为: 2015-06-04 08:30:00 3.使用代码如下: 3.1. ...

  7. EasyUI实现图片的上传后与其他文本框的提交以及DataGrid中图片的展示

    图片即文件,在jsp中文件上传很简单,一个type为file的input,一个form指定enctype为multipart/form-data,通过post提交到后台利用apache的commons ...

  8. eaysui 子页面刷新父页面datagrid

    近期碰到这样一个问题,子页面操作后需要刷新父页面datagrid元素,刚开始用这种方式刷新,$("#talbe",window.parent.document).datagrid( ...

  9. 在EasyUI的DataGrid中嵌入Combobox

    在做项目时,须要在EasyUI的DataGrid中嵌入Combobox,花了好几天功夫,在大家的帮助下,最终看到了它的庐山真面: 核心代码例如以下: <html> <head> ...

随机推荐

  1. 管理员常用Windows PowerShell命令Top25

    即使Windows PowerShell已经由来已久,但很多管理员并不愿意主动熟悉PowerShell cmdlet命令行.随着微软扩展了PowerShell的功能,管理员应该对其功能及使用烂熟于心. ...

  2. 3,SQL语句及数据库优化

       1,统一SQL语句的写法 对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的. 所以封装成复用方法,用标准模板来控制. select*from dual select*Fr ...

  3. json 处理日期格式

    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date createT ...

  4. Mysql性能优化四:分库,分区,分表,你们如何做?

    分库分区分表概念 分区 就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的 分表 就是把一张数据量很大的表按一定的规则分解成N个具有独立存储空间的实体表.系统读写时 ...

  5. Django 运行Admin 页面时出现 UnicodeDecodeError: 'gbk' codec can't decode byte XXXX解决方法

    具体报错信息 Traceback (most recent call last): File "D:\Anaconda3\lib\site-packages\django\core\hand ...

  6. 0.爬虫 urlib库讲解 urlopen()与Request()

    # 注意一下 是import urllib.request 还是 form urllib import request 0. urlopen() 语法:urllib.request.urlopen(u ...

  7. erc20代币合约

    看这篇文章需要对以太坊,智能合约,代币等概念有基本的了解. 什么是ERC20 可以把ERC20简单理解成以太坊上的一个代币协议,所有基于以太坊开发的代币合约都遵守这个协议.遵守这些协议的代币我们可以认 ...

  8. RDL/RDLC批量单据打印

    使用RDL或RDLC进行单据打印时,单张单据打印比较直观简单,无需说明.下面我们来谈一下批量单据打印的实现方法.以下以RDL的ReportBuilder设计环境为例进行讲解,RDLC.VS设计环境同理 ...

  9. Performanced C++ 经验规则

    http://www.cnblogs.com/ccdev/archive/2012/12/27/2836448.html Performanced C++,意为“高性能C++“编程,是笔者和所在团队多 ...

  10. mysql ibd 文件还原数据

    -- 这里要还原的表名为 test_table -- 1建库,并选中库,库名随意 -- 2查看InnoDB 引擎独立表空间是否开启 SHOW VARIABLES LIKE '%per_table%' ...