Ext的TreeGrid增加复选框(CheckBox)与复选框操作

这篇博客是小弟之前写在cnblogs的,发现cnblogs的人气太少,所以准备博客搬家到csdn。希望大家多多关照。 搞了半天,没弄明白,csdn为什么不能像csdn一样可以代码高亮显示啊。没搞明白这个编辑器怎么用的,需要修改代码的朋友,请到http://www.cnblogs.com/yon2068/archive/2012/07/03/2575375.html  看高亮显示的代码。
摘要由CSDN通过智能技术生成

这篇博客是小弟之前写在cnblogs的,发现cnblogs的人气太少,所以准备博客搬家到csdn。希望大家多多关照。 

搞了半天,没弄明白,csdn为什么不能像csdn一样可以代码高亮显示啊。

没搞明白这个编辑器怎么用的,需要修改代码的朋友,请到http://www.cnblogs.com/yon2068/archive/2012/07/03/2575375.html  看高亮显示的代码。


最近项目开发要求用树形列表显示多列数据,结构例如:

研发部

|--张三  男 25岁

|--李四  女 25岁

项目部

|--王二 男 18岁

 

接到任务后,首先想到的时Ext的Tree控件,但Ext.Tree.Treepanel只能显示单列数据,也就是说无法显示 "性别"和"年龄"这两个字段。

到网上查了相关资料后发现Ext拓展的TreeGrid是Table数,可以满足自己的需求,但TreeGrid在用的时候遇到了一个棘手的问题:没有原生TreeNode的CheckBox功能。

查了半天资料也到了比较完美的解决方案:

 

一、解决方法:

  打开TreeGridNodeUI.js文件,将下面记为绿色的代码插入到相应位置,并保存文件。

  1  /*!
  2   * Ext JS Library 3.4
  3   * Copyright(c) 2006-2010 Sencha Inc.
  4   * licensing@sencha.com
  5   * http://www.sencha.com/license
  6   */
  7  /**
  8   * @class Ext.ux.tree.TreeGridNodeUI
  9   * @extends Ext.tree.TreeNodeUI
 10   */
 11  Ext.ux.tree.TreeGridNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {
 12      isTreeGridNodeUI: true,
 13  
 14      renderElements : function(n, a, targetNode, bulkRender){
 15          var t = n.getOwnerTree(),
 16              cols = t.columns,
 17              c = cols[0],
 18              i, buf, len;
 19  
 20          this.indentMarkup = n.parentNode ? n.parentNode.ui.getChildIndent() : '';
 21  
 22      var cb = Ext.isBoolean(a.checked);
 23          buf = [
 24               '<tbody class="x-tree-node">',
 25                  '<tr ext:tree-node-id="', n.id ,'" class="x-tree-node-el x-tree-node-leaf ', a.cls, '">',
 26                      '<td class="x-treegrid-col">',
 27                          '<span class="x-tree-node-indent">', this.inde
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以通过以下步骤实现layui treegrid复选框全选功能: 1. 在treegrid的表头中添加一个全选复选框。 2. 在每行数据中添加一个复选框。 3. 使用jQuery的prop()方法来控制全选复选框和每行数据的复选框的选中状态。 4. 监听全选复选框的change事件,当全选复选框的状态改变时,通过循环遍历每行数据的复选框,来改变每行数据的选中状态。 下面是示例代码: HTML代码: ```html <table class="layui-table" id="treegrid"></table> ``` JavaScript代码: ```javascript layui.use('treeGrid', function(){ var treeGrid = layui.treeGrid; var data = [ { id: 1, name: '节点1', children: [ { id: 2, name: '节点2' }, { id: 3, name: '节点3' } ] }, { id: 4, name: '节点4', children: [ { id: 5, name: '节点5' }, { id: 6, name: '节点6' } ] } ]; var options = { elem: '#treegrid', data: data, treeIdName: 'id', treeUpIdName: 'parentId', treeShowName: 'name', cols: [ {type:'checkbox'}, {field:'name', width:200} ] }; treeGrid.render(options); // 全选复选框的change事件 $('#treegrid thead [type="checkbox"]').on('change', function(){ var isChecked = $(this).prop('checked'); // 遍历每行数据的复选框,改变选中状态 $('#treegrid tbody [type="checkbox"]').prop('checked', isChecked); }); }); ``` 在上面的代码中,我们在表头中添加了一个复选框,然后监听了它的change事件。在事件处理函数中,我们通过jQuery选择器找到每行数据的复选框,并使用prop()方法改变它们的选中状态。这样,当全选复选框的状态改变时,每行数据的复选框也会跟着改变。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值