2018-02-22 重新分享有关表格的样式设定问题——固定头
第一组:杨昊 重新分享有关表格的样式设定问题——固定头、列
表单的头部、首列需要固定,不要随着滚动条的变化而移动,方法有很多。如下:
image想实现类似的操作,逃不过下面两个属性:
position: relative;
z-index:99;
position属性:规定元素的定位类型,relative是指生成相对定位的元素,相对于其正常位置进行定位。比如"left:20" 会向元素的left 位置添加 20 像素。
z-index属性:设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。其中,元素可拥有负的 z-index 属性值。z-index 仅能在定位元素上奏效。
我在实现这个操作时使用的是jQuery的方式,将样式动态注入。代码如下:
image附代码:
//首列固定
$(".table-p").scroll(function() {
if ($(".table-p").scrollTop() > 0) {
var Htable_flinew2 = $(".table-p").scrollTop() + "px";
$(".tdwid2").css("position", "relative");
$(".tdwid2").css("background", "#fff");
$(".tdwid2").css("top", Htable_flinew2);
}else{
$(".tdwid2").css("top", "0");
}
if ($(".table-p").scrollLeft() > 0) {
var Htable_flinew = $(".table-p").scrollLeft() + "px";
$(".table tbody tr td:first-child").css("left", Htable_flinew);
$(".table thead tr th:first-child").css("left", Htable_flinew);
}else{
$(".table tbody tr td:first-child").css("left", "0");
$(".table thead tr th:first-child").css("left", "0");
}
})
第二组:暂缺
第三组:黄华英 JavaScript代码片段
- 给定一个 key 和一个 set 作为参数,给定上下文时调用它们。主要用于函数组合。使用闭包以存储的参数调用存储的key。
const call = (key, ...args) => context => contextkey;
- 将接受数组的函数改变为可变参数函数。给定一个函数,返回一个闭包,将所有输入收集到一个接受函数的数组中。
const collectInto = fn => (...args) => fn(args);
- flip 接受一个函数参数,然后将该函数第一个参数作为最后一个参数。返回一个接受可变参数输入的闭包,并且在应用其余参数之前将最后一个参数作为第一个参数。
const flip = fn => (...args) => fn(args.pop(), ...args);
- 执行从左到右的函数组合。使用Array.reduce()与展开操作符(...)来执行从左到右的函数组合。第一个(最左边的)函数可以接受一个或多个参数;其余的函数必须是一元函数。
const pipeFunctions = (...fns) => fns.reduce((f, g) => (...args) => g(f(...args)));
- 转换一个异步函数,以返回一个promise。使用柯里化返回一个函数,这个函数返回一个调用原始函数的Promise。使用...rest运算符传入所有参数。
const promisify = func => (...args) =>new Promise((resolve, reject) =>func(...args, (err, result) => (err ? >reject(err) : resolve(result))));
- 接受一个可变参数函数并返回一个闭包,该闭包接受一个参数数组映射到该函数的输入。使用闭包和展开运算符 (...) 将参数数组映射到函数的输入。
const spreadOver = fn => argsArr => fn(...argsArr);
- 把一个数组分块成指定大小的小数组。使用Array.from()创建一个新的数组,它的长度就是生成 chunk(块) 的数量。 使用Array.slice()将新数组的每个元素映射到长度为size的 chunk 中。 如果原始数组不能均匀分割,最后的 chunk 将包含剩余的元素。
const chunk = (arr, size) =>
Array.from({ length: Math.ceil(arr.length / size) }, (v, i) =>arr.slice(i * size, i * size + size));
- 从数组中移除 falsey 值元素。使用Array.filter()过滤掉数组中所有 假值元素(false,null,0,"",undefined, 和NaN)。
const compact = arr => arr.filter(Boolean);
- 计算数组中值的出现次数。每次遇到数组中的某个特定值时,使用Array.reduce()来递增计数器。
const countOccurrences = (arr, value) => arr.reduce((a, v) => (v === value ? a + 1 : a + 0), 0);
- 深度平铺一个数组使用递归。通过空数组([])使用Array.concat(),结合展开运算符(...)来平铺数组。递归平铺每个数组元素。
const deepFlatten = arr => [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v)));
第四组:王芳 《海边的曼彻斯特》
遗憾大约占了真实人生的一半, 不是所有人都可以和过去和解,逃げるは恥だが役に立つ
第五组:王颢 WinForm
-
在WinForm中使多个控件共享一个事件的实现:
方法:按住Ctrl键,一次选中多个控件,选择它们共有事件,双击即可。
例如:选择多个Button,在事件中找到Button的单击事件,双击进去,在Click事件中编写代码,这样就实现了多个控件共享一个事件。 -
在WinForm中使用DataGridView与数据库绑定数据时,会出现中英文列名同时显示的麻烦,这时只需一行代码将英文列明显示屏蔽掉既可以只显示中文列名;
示例代码:this.DataGridView1.AutoGenerateColumns=false; -
在WinForm中如果是一个容器控件,比如说:GroupBox,Panel,若想它其中的所有控件的Enabled属性都为false,只需将改容器控件的Enabled属性设为false即可实现该效果。
示例代码:
this.Panel1.Enabled=false;