bootstrap-table可见列本地记忆缓存。

2 篇文章 0 订阅
2 篇文章 0 订阅

首先,我们要理清思路。我们为什么要做这个(肯定是产品提的啊啊啊啊真是令人头大)

我们怎么做?是在一个电脑上每个用户区分开,还是一个电脑上所有用户都共用一套可见控制?

(代码默认显示x列)A自定义了x列默认不显示,那么B登录以后还是默认显示的,这是前者。

(代码默认显示x列)A自定义了x列默认不显示,那么B登录以后也是默认不显示,这是后者。

我这里是实现了后者,其实工作量是完全一样的

首先我们写一下基础缓存相关代码,做到能把数据存入本地浏览器缓存,后续我们需要把列存起来 格式就是上图所示。

//本地缓存定义
var oStorage = {
	_Storage: window.localStorage,
	// 是否支持缓存
	isSupportStorage: function () {
		return this._Storage != undefined ? true : false;
	},
	// 是否有缓存
	hasItem: function (item) {
		return this._Storage.hasOwnProperty(item);
	},
	// 获取缓存 key-value形式
	getItem: function (item) {
		// 将json字符串转成对象或数组
		return JSON.parse(this._Storage.getItem(item));
	},
	// 设置缓存 key-value形式
	setItem: function (item, val) {
		// 将对象或数组转成json字符串
		return this._Storage.setItem(item, JSON.stringify(val));
	}
};

然后我们写一下表格第一次加载时的代码

// 表格载入成功时执行的函数 tid是表格的ID 必须唯一 field是默认隐藏的字段 实际应用中 我们需要隐藏的并不固定,所以field为应该是一个以,作为分隔的字符串。也可以为空,例如 ""  "A"  "a,b,b" 这样子
function loadSuccess(tid, field) {
	// 第一次载入时没有缓存,把默认隐藏的列存入缓存中
	if (!(oStorage.isSupportStorage() && oStorage.hasItem(tid))) {
		var aTmpConfig = field.split(',');//我们把字段分割为数组  如果field=""  那么split不会执行,咱存的也是空 不会报错的
		console.log(aTmpConfig);//打印看看 可以删掉
		oStorage.setItem(tid, aTmpConfig);//存入缓存了
	}

	// 从本地缓存中获取用户配置
	var aUserConfHideCols = oStorage.getItem(tid);//根据ID获取  
	if (aUserConfHideCols != "") {
		// 遍历用户配置中的数据
		aUserConfHideCols.forEach(function (sField) {
			// 通过hideColumn方法隐藏列
			$("#" + tid).bootstrapTable('hideColumn', sField);
		});
	}
	WidthCallback();//回调一下表头错位问题解决方法。表头错位问题在我上一篇文章 用不到可以删掉。
//https://blog.csdn.net/qq_41610390/article/details/105268309
}

表头错位如需要请点我

然后我们写一下用户自定义设置列显示状态调用的方法

// 切换列时执行的函数 tid是表格ID DomId是页面里<table id='xxx'></table>的上一层容器的ID
function columnSwitch(tid, DomId) {
	// tid表示表格id,必须唯一
	// DomId表示特定id
	var aTmpConfig = [];
	// 找到特定id下的所有input框,遍历,i表示索引,v表示元素
	$("#" + DomId + " .bootstrap-table  div.dropdown-menu").find("input").each(function (i, v) {
		// 判断未勾选的列,获得字段属性存入定义的数组中
		if (!$(v).is(':checked')) {
			aTmpConfig.push($(v).attr("data-field"));
		}
	});
	// 通过setItem方法,以key-value形式存入缓存中
	oStorage.setItem(tid, aTmpConfig);
	WidthCallback();//调用表头错位解决方法  用不到可以删掉
}

如果你想每个用户单独设置,那就获取一下你能定位到某一用户的USERID或者username之类的 最好选用后续不会改变的值。拿这个值跟tid拼接成一个新的key  从而达到每个用户相互独立的设置。例如 tid=admin_tableName  或者 tid=user_tableName 这样,不知道各位能不能懂。

然后回到我们页面。

在字段定义的时候,我们一定要加入switchable: true, visible: true 前者代表这一列可以被隐藏或显示,后者表示这一列是默认显示的,注意,即使你想要默认隐藏此列,这里也有设置为默认显示。隐藏需要在下边代码里去实现。否则会造成程序混乱这里不多解释了。因为本质上咱这里整体功能实现是先全部显示,再隐藏某些用户自定义或程序默认隐藏的列

在onLoadSuccess方法里 加入以下一行代码,两个字段在初次加载之后便是隐藏的

loadSuccess("我是此表格的唯一ID","我是字段,我是字段2"); //这里字段可以是0个也可以是很多个,自己灵活安排

用户点击设置某列隐藏活显示之后,在onColumnSwitch方法里加入

columnSwitch("我是表格的唯一的ID", "我是表格父级容器的ID");//后者只需要本页面唯一就好了,前者再次强调是项目内唯一。

end 到这里就结束啦~有问题请留言看到会解答。转载引用标个出处就行了。

2020不秃头!!!!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: bootstrap-table是一款十分常见的开源JS开发工具,用于构建数据表格。bootstrap-table具有许多特性和功能,其中最被广泛使用的特性之一就是固定。 固定是指在展示数据表格时,固定某些的位置,使得这些无论用户如何滚动页面,始终显示在页面的左侧或右侧。通过这种方式,可以让用户更加方便的查看数据,同时也增强了网页的用户体验。 在bootstrap-table中,要实现固定,可以使用官方提供的fixedColumns扩展插件。这个插件可以让指定的固定在左边或右边,同时支持滚动条。可以根据需要进行配置,可以设置固定的数量和位置。具体实现方法如下: 1. 导入bootstrap-table和fixedColumns插件 ```html <script src="bootstrap-table.min.js"></script> <script src="bootstrap-table-fixed-columns.js"></script> ``` 2. 在table标签中添加fixed-columns属性,并配置固定数量和位置 ```html <table id="table" data-toggle="table" data-fixed-columns="true" data-fixed-number="2" data-fixed-left-width="200"> ... </table> ``` 3. 调用bootstrapTable和fixedColumns函数来初始化表格 ```javascript $(function(){ $('#table').bootstrapTable({ ... }); $('#table').bootstrapTable('fixedColumns'); }); ``` 总体来说,使用bootstrap-table的fixedColumns插件实现固定非常方便,只需简单的配置就可以轻松实现。具体使用可以参考官方文档或者相关教程。 ### 回答2: bootstrap-table是一款功能丰富的jQuery表格插件,提供了丰富的特性和灵活的配置选项。其中固定是其特色之一。 固定是指在表格滚动时,某些保持固定不动,不受滚动影响。这种功能在数据量较大的情况下,可以更好地展示数据,提高用户体验。 使用bootstrap-table实现固定的方法如下: 1.在表格初始化时通过“fixedColumns”选项指定需要固定的数,如下: $('#table').bootstrapTable({ fixedColumns: true }); 2.定义固定的宽度,可以通过“fixedWidth”选项进行设置,如下: $('#table').bootstrapTable({ fixedColumns: true, fixedWidth: 200 }); 3.指定固定的,可以通过“fixedNumber”选项进行设置,如下: $('#table').bootstrapTable({ fixedColumns: true, fixedNumber: 2 }); 其中,固定数和固定的宽度需要根据实际需求进行具体的配置。在实际应用中,需要注意固定的性能问题,当固定数较多时,会影响表格的性能和加载速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值