上一篇文章,讲了Qui中Layout阻止了页面回退时浏览器缓存表单的输入。今天我们就要实现这种列表页(上下两部分,上面是查询框,下面是grid)回退时,还原列表页数据。

  不能通过Form利用浏览器缓存,那我们的想到了页面间传值。方法是可行,但是要修改的页面涉及的就多了,从列表页链接出去的所有页面都要修改,太过麻烦了。于是还是要利用Form,这样就把Form从Layout布局里拿到布局外面(包含了grid),无奈之举。

  首先要解决的问题就是Form范围,但表单重置时,我们想要的效果是重置查询表单,不包含grid下分页控件的input按钮。

  

 

  其次将还原分为了两块:一是还原查询框中输入的数据;二是,还原grid中的数据(包含通过查询条件后的结果和当前页码)。因为用户不一定输入了查询数据就会按下查询按钮。

  操作一步骤如下:

    1.在Form中定义隐藏域对应查询框中的值,如图:

  

    2.当页面跳转时,保存查询框中的数据至隐藏域

  

     3.页面初始化时,将隐藏域中的数据还原查询框

    

   操作二包含两部分:1.grid当前查询条件 2.grid分页当前页码

    步骤如下:

    1.定义保存这两个数据的隐藏域,如图:

    

    2.将所有的查询条件组合成字符串保存,如图:

    

    3.获取grid当前页码,并保存

    

  最后综合两方面,当从列表页链接出去的操作,只需要调用如下方法即可,如图:

  

  到此,完成需求。