随着HTML5产品分支的不断深入使用,HTML5的需求也是越来越多,表格组件的使用也不例外,什么排序,分页,自动列宽等。最近有客户提出了如果让表格的列头加上全选的功能。细细分析其实就是两部分,表格的body部分是勾选的列,表头也绘制成勾选的列。
对于表格body部分的勾选,最简单是应用TWaver默认的boolean类型的render,方法很简单,只要在创建表格列时设置下面的语句就行:
1 |
column.setValueType( 'boolean' );
|
主要就是绘制表头的render,表头的render设置也是很easy,我们只要在表头的div中加上checkbox,然后再给checkbox加上动作,如果勾选上,就让这一列所有的数据都为true,反之亦然。代码如下:
1 |
var checkbox = document.createElement( 'input' );
|
2 |
checkbox.setAttribute( "type" , "checkbox" );
|
3 |
checkbox.checked = true ;
|
4 |
checkbox.onclick = function(e){ |
5 |
var checked = this .checked;
|
6 |
column.checked = checked; |
7 |
databox.forEach(function(element){ |
8 |
element.setClient( "nVisible" ,checked);
|
11 |
column.renderHeader = function(div){ |
12 |
div.style.textAlign = 'center' ;
|
13 |
div.appendChild(checkbox);
|
这样的默认效果感觉还不是那么美观,我们用图片来替代checkbox也可以达到同样的效果,再来看看这张图,感觉是不是好看了一点。
完整的代码实现见下方:
5 |
<title>Custom Table</title>
|
7 |
.visible-header{background:url(checkeye.png) 0px 0px; border:none; width: 12px; height: 7px; cursor: pointer;}
|
8 |
.unVisible-header{background:url(checkeye.png) -17px 0px;}
|
10 |
<script type= "text/javascript" src= "twaver.js" ></script>
|
11 |
<script type= "text/javascript" >
|
13 |
var box = new twaver.ElementBox();
|
15 |
var table = new twaver.controls.Table(box);
|
16 |
table.setEditable( true );
|
17 |
var tablePane = new twaver.controls.TablePane(table);
|
18 |
var visibleColumn = createColumn(table, 'Visible' , 'nVisible' , 'client' , 'boolean' , 30 );
|
19 |
createColumn(table, 'Id' , 'id' , 'accessor' , 'string' , 300 );
|
20 |
createColumn(table, 'Name' , 'name' , 'accessor' , 'string' , 70 );
|
21 |
renderHeaderCheckBox(visibleColumn,box);
|
22 |
visibleColumn.renderCell = function(cell){renderCellCheckbox(cell)};
|
23 |
document.body.appendChild(tablePane.getView());
|
24 |
tablePane.getView().style.left = '50px' ;
|
25 |
tablePane.getView().style.top = '50px' ;
|
26 |
tablePane.getView().style.width = '400px' ;
|
27 |
tablePane.getView().style.height = '800px' ;
|
30 |
function renderHeaderCheckBox(column,databox){
|
31 |
var checkbox = document.createElement( 'input' );
|
32 |
checkbox.setAttribute( "type" , "button" );
|
33 |
checkbox.setAttribute( "class" , "visible-header" );
|
34 |
checkbox.checked = true ;
|
35 |
checkbox.onclick = function(e){
|
36 |
var checked = this .checked;
|
37 |
column.checked = checked;
|
39 |
checkbox.setAttribute( "class" , "visible-header" );
|
41 |
checkbox.setAttribute( "class" , "visible-header unVisible-header" );
|
43 |
this .checked = ! this .checked;
|
44 |
databox.forEach(function(element){
|
45 |
element.setClient( "nVisible" ,checked);
|
48 |
column.renderHeader = function(div){
|
49 |
div.style.textAlign = 'center' ;
|
50 |
div.appendChild(checkbox);
|
54 |
function renderCellCheckbox(cell){
|
55 |
var checkbox = document.createElement( 'input' );
|
56 |
checkbox.setAttribute( "type" , "button" );
|
57 |
var checked = cell.data.getClient( "nVisible" );
|
59 |
checkbox.setAttribute( "class" , "visible-header" );
|
61 |
checkbox.setAttribute( "class" , "visible-header unVisible-header" );
|
63 |
checkbox.onclick = function(e){
|
64 |
var checked = cell.data.getClient( "nVisible" );
|
65 |
cell.data.setClient( "nVisible" ,!checked);
|
67 |
cell.div.style.textAlign = 'center' ;
|
68 |
cell.div.appendChild(checkbox);
|
71 |
function initDataBox(box){
|
72 |
for (var i = 0 ; i < 10 ; i++){
|
73 |
var node = new twaver.Node();
|
74 |
node.setName( "node" +i);
|
75 |
node.setClient( 'nVisible' , true );
|
80 |
function createColumn(table, name, propertyName, propertyType, valueType, width) {
|
81 |
var column = new twaver.Column(name);
|
83 |
column.setPropertyName(propertyName);
|
84 |
column.setPropertyType(propertyType);
|
85 |
if (valueType) column.setValueType(valueType);
|
86 |
if (width) column.setWidth(width);
|
87 |
column.setEditable( true );
|
88 |
column.setSortable( false );
|
89 |
table.getColumnBox().add(column);
|
94 |
<body onload= "init()" style= "margin:0;" >
|
分享到:
相关推荐
在HTML中,创建一个可多选的下拉框通常涉及到`<select>`...通过这种方式,我们可以创建一个具有多选功能的下拉菜单,同时保持良好的用户体验和可定制性。在实际开发中,根据项目需求,可以选择适合的实现方法和技术栈。
HTML多列选择是一种常见的用户界面元素,用于在网页上提供多选项供用户选择。这种功能通常结合了HTML、CSS和JavaScript库,如jQuery,来创建交互性和灵活性强的多列选择框。在这个场景中,jQuery提供了强大的DOM操作...
这需要实现一种选择机制,如复选框、全选/全不选按钮等,然后在选中的基础上执行拖放操作。 - **响应式设计**:确保在不同设备和屏幕尺寸上,拖动列的功能依然可用且直观。 - **性能优化**:大量数据时,频繁的DOM...
Sublime Text 3是一款广受欢迎的轻量级、高效且高度可定制的文本编辑器,尤其受到程序员和Web开发者喜爱。对于HTML格式化的任务,Sublime Text 3提供了丰富的功能和插件,使得代码整洁、易读变得轻而易举。下面我们...
1. **全选批量操作**:可以添加一个CheckBox控件作为全选按钮,通过遍历Repeater的Items集合来实现批量操作。 2. **通过Eval绑定样式**:使用Eval函数结合CSS类或内联样式,可以动态设置项的样式。 3. **与...
5. **自定义UI和交互触发**:组件应允许开发者根据具体UI设计和交互需求进行定制。 **设计思路** 为了满足上述需求,我们需要创建几个装饰性指令来封装选择逻辑: 1. **moSelect指令**:作为容器指令,它包含了...
- **多级列头**:通过嵌套`<th>`实现多级列头,增强表格结构层次感。 4. **扩展功能** - **行选择**:通过`data-select-item-name="btSelectItem"`启用行选,提供全选/全不选功能。 - **行操作**:在每一行末尾...
5. 行选择:提供了多种行选择模式,如单选、多选和全选。 6. 编辑功能:内置了单元格和行的编辑功能,支持各种输入类型。 7. 自定义列:可以自定义列的显示方式,包括模板、样式和列宽。 8. 扩展性:EXT DataGrid有...
5. **可配置性**:Bootstrap Dual Listbox提供多种可定制的参数,如是否启用筛选、是否显示计数器、选择按钮的文本等,可以根据实际需求进行调整。 6. **兼容性**:此插件兼容所有现代浏览器,包括Chrome、Firefox...
综上所述,jQuery dualListbox1.3是一个强大且易于定制的双列选择框插件,它在Bootstrap框架下提供了高效的选择和管理大量选项的解决方案。通过深入研究和实践,我们可以将其无缝融入到Web项目中,提升用户在数据...
在上面的代码中,我们可以看到,layui提供的JavaScript函数被用于实现表格的交互效果,例如 Checkbox 的选择和全选功能。 Layui表格的优点 Layui表格的优点包括: 1. 灵活的布局方式:Layui表格提供了灵活的布局...
jQuery操作Table技巧大汇总主要涵盖了如何使用jQuery对HTML表格进行一系列的交互和样式修改,包括鼠标响应、样式调整、行和列的隐藏与删除,以及单元格内容的获取与设置等。以下是对这些技巧的详细解释: 1. 鼠标...
通过对这个文件的深入研究和修改,开发者可以根据自己的需求定制功能,例如添加分页、排序、过滤等高级特性。 总的来说,"jquery实现带复选框的gridview"这个项目为开发者提供了一个起点,帮助他们快速构建具有复选...
5. **列位置拖拉**:用户可以自由调整列的位置,以满足个性化布局需求。 6. **表格尺寸调整**:允许用户动态调整表格的长度和宽度,以适应不同屏幕和显示需求。 7. **列宽调整**:用户可以自定义列宽,优化数据...
例如,可以将其应用于表格列的过滤条件,或者作为表单组件,用于用户提交多选数据。 在实际项目中,`jquery_multiselect` 可广泛应用于需要用户进行多选操作的场景,如设置权限、选择兴趣爱好、选择城市等。 总结...
表单在移动设备上展示数据时,需要考虑到屏幕尺寸有限,因此框架通常会提供优化的表格布局,支持滚动、分页和列筛选等功能。"新增/编辑"功能则是指框架提供的数据操作能力,允许用户在界面上添加新记录或编辑现有...
2. Checkbox全选功能:表格中会使用Checkbox来实现多选功能,ExtJs中可以方便地通过配置选项来实现全选或反选,以及对应行的选中状态管理。 3. 动态列显示:在数据展示时,用户可能需要根据自己的需求选择显示哪些...
4. 行选择:支持单行、多行和全选,可通过`selarrrow`获取选中行数据。 5. 表格事件:包括`loadComplete`、`clickRow`、`beforeSelectRow`等,用于扩展功能和业务逻辑。 四、jqGrid样式与皮肤 jqGrid提供了多种...
这个方法可能涉及到遍历当前页面上的所有记录,根据传入的列号(fieldNum)来切换选择状态。如果`changeSelectRange`返回true,表示成功执行了全选或反选操作,那么可以进一步执行其他逻辑。 这个解决方案的核心...
5. **插件**:SlickGrid有许多社区维护的插件,例如分页插件、全选/全不选插件、行拖放插件等,这些都可以通过简单配置启用。 6. **自定义行为**:如果标准功能无法满足需求,开发者可以通过覆盖默认行为或编写...