这是之前我发的一个贴子问题描述: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. struts2官方 中文教程 系列七:消息资源文件

    介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字 ...

  2. sqoop 的使用 -20160410

    1  导入导出数据库   1)列出mysql数据库中的所有数据库命令  #  sqoop list-databases --connect jdbc:mysql://localhost:3306/ - ...

  3. Scala function programming

    1. Arbitrary multi parameters funcs sum(1,2,3,4,5) = sum(1 to 5: _*)the equal '=' can be ignored if ...

  4. 对 a = [lambda : x for x in range(3)] 的理解

    上面的语句创建了一个列表 a ,其中有三个元素,每个元素都是一个 lambda 匿名函数. >>> a = [lambda : x for x in range(3)] >&g ...

  5. [leetcode-648-Replace Words]

    In English, we have a concept called root, which can be followed by some other words to form another ...

  6. LCA(最近公共祖先)——LCA倍增法

    一.前人种树 博客:最近公共祖先 LCA 倍增法 博客:浅谈倍增法求LCA 二.沙场练兵 题目:POJ 1330 Nearest Common Ancestors 代码: const int MAXN ...

  7. beta版本冲刺六

    目录 组员情况 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组内最新成果 团队签入记 ...

  8. windows bat批处理基础命令学习教程(转载)

    一.基础语法: 1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令.可以使用任何文本文件编辑工具创建和修改.2.批处理是一种简单的程序,可以用 if 和 goto 来控 ...

  9. 【转】 cocos2dx 3.x C++搭建protobuf环境

    http://blog.csdn.net/ganpengjin1/article/details/50964961 Cocos2dx 里面在网络游戏通信这一块一般我们都会采用protobuf来进行通信 ...

  10. JavaScript中常用转义字符

    \b   退格 \f   换页 \r   回车 \n   换行 \"   双引号 \'  单引号 \t  Tab字符 \\  反斜杠 \xnn  十六进制代码nn表示的字符 \unnnn 十 ...