1. 前言

主要是利用了HTHNL5的localStorage技术和用ajax传输一个数组到后台并进行判断。这篇文章是解决一个小需求而来的,主要是用来记录。

2. 代码

JavaScript:

        var g_sample_sortArr = [];
var sample_sortKey,sample_sortVal; $("#grid-sample").on("initialize.rs.jquery.bootgrid", function (e) { if (typeof localStorage.sample_rowCount == 'string') {
$("#grid-sample").bootgrid("setRowCount", localStorage.sample_rowCount);
} if (typeof localStorage.sample_sortDict == 'string') {
var sortObj = JSON.parse(localStorage.sample_sortDict);
//global
sample_sortKey = Object.keys(sortObj)[0];
sample_sortVal = sortObj[sample_sortKey];
g_sample_sortArr = [];
g_sample_sortArr.push(sample_sortKey,sample_sortVal);
console.log("lastItemSort[]="+sample_sortKey+":"+sample_sortVal);
} }) function updateArrowDirection(){
//show arrow Direction when refresh PMS page
var arrowDirection = (sample_sortVal == 'asc') ? 'icon glyphicon glyphicon-chevron-up' : 'icon glyphicon glyphicon-chevron-down';
$('[data-column-id="' + sample_sortKey + '"] span:last').attr('class',arrowDirection);
} var grid_sample_data =
$('#grid-sample').bootgrid({
ajax:true,
rowCount:[10, 20, 30, 50],
navigation: 3,
post:function(){
return {
type: 'getSampleInfo',
"lastItemSort[]": g_sample_sortArr
};
},
searchSettings: {
delay: 200,
characters: 3
},
url: "./sample",
dataType: "json",
rowSelect: false,
formatters:{ }
}).on("loaded.rs.jquery.bootgrid",function(){
localStorage.setItem("sample_rowCount", $("#grid-sample").bootgrid("getRowCount"));
var curSortDict = $("#grid-sample").bootgrid("getSortDictionary");
if(Object.keys(curSortDict).length != 0){
localStorage.setItem("sample_sortDict", JSON.stringify(curSortDict));
}
}); //show arrow Direction when refresh
updateArrowDirection(); 

Java:

        String id = request.getParameter("sort[id]");
String sender = request.getParameter("sort[sender]");
String received = request.getParameter("sort[received]"); String[] lastItemSort = request.getParameterValues("lastItemSort[]"); //example: string like ["id","asc"] if(lastItemSort != null) {//refresh current page or go to others page and return previous page switch(lastItemSort[0]) {
case "id": //when id != null, it denotes one click id to sort and previous var id will get value.
if(id == null) id = lastItemSort[1]; break;
case "sender":
if(sender == null) sender = lastItemSort[1]; break;
case "received":
if(received == null) received = lastItemSort[1]; break;
default:
System.out.println("This Type Can't Support for Sample Sort"); }
}  

3. 效果图

文字描述,就是之前点击排序后,刷新还能保持之前的排序和正确的箭头指向。

4. 总结

利用H5的localStorage技术可以bootgrid刷新保持当前排序,当然还可以保存当前显示的行数,其它需要保存的变量都可以用这个技术来保存,这个localStorage保存的数据,有效期很长,只要在本机电脑的浏览器使用过一次,就可以一直保存住该变量值,类似保存在本地的文本一样的感觉。

bootgrid 刷新保持当前排序的更多相关文章

  1. winform中datagridview刷新后的排序记忆

    datagridview先点标题排序,但是重新刷新之后,还是变成窗体加载后的样子 我这里用定时器刷新的. 1.先定义三个全局变量 /// <summary> /// 需要排序的列和方向 / ...

  2. 扩展GridView实现的一个自定义无刷新分页,排序,支持多种数据源的控件TwfGridView

    最近项目View层越来越趋向于无刷新化,特别是数据展示方面,还要对Linq有很好的支持.在WebFrom模式的开发中,GridView是一个功能很强大,很常用的控件,但是他也不是完美的,没有自带的无刷 ...

  3. 从零开始编写自己的C#框架(16)——Web层后端父类

    本章节讲述的各个类是后端系统的核心之一,涉及到系统安全验证.操作日志记录.页面与按键权限控制.后端页面功能封装等内容,希望学习本系列的朋友认真查看新增的类与函数,这对以后使用本框架进行开发时非常重要. ...

  4. UI第十八节——UITableView

    在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,基本大部分应用都有UITableView.当然它的广泛使用自然离不开它强大的功能,今天就针对U ...

  5. iOS开发系列--UITableView全面解析

    --UIKit之UITableView 概述 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是U ...

  6. iOS-UI-UI控件概述

    以下列举一些在开发中可能用得上的UI控件: IBAction和IBOutlet,UIView 1 @interface ViewController : UIViewController 2 3 @p ...

  7. UITableView全面解析

    本文转自:http://www.cocoachina.com/ios/20140922/9710.html 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以 ...

  8. UITableView全面解析,讲的好详细

    --UIKit之UITableView 概述 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是U ...

  9. UITableView 全面详解

    在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不 ...

随机推荐

  1. A1032. Sharing

    To store English words, one method is to use linked lists and store a word letter by letter. To save ...

  2. JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案

    本项目测试环境 JDK: 1.8 SpringBoot: 2.1 需求描述 当我们想要利用SpringBoot封装一套组件并发布给第三方使用时,我们就不得不考虑我们的组件能否被使用者正确引入使用,此处 ...

  3. GBDT

    一.决策树分类 决策树分为两大类,分类树和回归树 分类树用于分类标签值,如晴天/阴天/雾/雨.用户性别.网页是否是垃圾页面 回归树用于预测实数值,如明天的温度.用户的年龄 两者的区别: 分类树的结果不 ...

  4. Spark记录-SparkSQL一些操作

    scala>val spark=new org.apache.spark.sql.SQLContext(sc) user.json {"age":"45" ...

  5. 转--python 中写单例

    原文地址 原文地址2 Python中的单例模式的几种实现方式的及优化 阅读目录(Content) 单例模式 实现单例模式的几种方式 1.使用模块 2.使用装饰器 3.使用类 4.基于__new__方法 ...

  6. python学习笔记8-异常处理

    一.异常处理 在程序运行过程中,总会遇到各种各样的错误.程序一出错就停止运行了,那我们不能让程序停止运行吧,这时候就需要捕捉异常了,通过捕捉到的异常,我们再去做对应的处理. 下面我们先写一个函数,实现 ...

  7. JAVA 并发编程学习(2)之基本概念

    1,是不是线程创建越多越好? 当一个程序创建了大量的线程时,活跃的线程会消耗内存.若可运行的线程数量多于可用处理器的数量,那么有些线程将闲置.大量空闲的线程会占用许多内存,给垃圾回收带来压力,而且大量 ...

  8. B树学习总结

    1,B树的基本介绍 ①B树,相比于二叉树.红黑树而言,它的特点就是树的高度比其他类型的树要低很多.如何做到低呢?B树中的每个结点的分支数目非常大,即每个结点有很多很多孩子结点.这样,在相同结点数目情况 ...

  9. mysql 案例 ~ 瘦身mysql系列(1)

    一 简介:这一系列我们要进行如何瘦身mysql 二 目的:通过提高CPU利用率和节约成本,降低数据库容量及I/O负载,从而使数据吞吐率得到显著提高 三 方法: 利用innodb的COMPRESSED ...

  10. Service的线程、工作线程、权限及系统Service

    Service组件和其他组件一样,都是运行于应用的主线程当中,它们都运行于同一个单一的线程中. 可以把Service简单的理解成一个没有界面显示的Activity(这个比喻其实并不准确,因为Servi ...