`
chun521521
  • 浏览: 281884 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Ext 三态 复选树

 
阅读更多

这个东西总会用到,可是开发起来甚是麻烦,下面是我做的,当然也参考了网友的作品。

参考文章:http://blog.csdn.net/weil001/article/details/4008016

 

根据自己的业务,角色分配菜单,改造如下:

1.选择一个角色弹出如下界面:

图1

 

复选树代码在src.rar

 

2.js代码调用

var roleId = record.get('roleId');// 选择角色的ID
var menuTree = new Ext.sys.CheckMenuTree({ roleId: roleId });

 

var win = new Ext.Window({
      title: '角色授权', width:600,height:400,
      modal: true, resizable: true, layout: 'fit',
      items: [menuTree],
      buttonAlign: 'center',
      buttons: [{
             text:'确定', iconCls:'icon_ok',
             handler: function(){
              var ids = menuTree.getCheckedNodes();// 被选中的树节点-json串形式
              alert(ids );

             // 自己业务代码

 

             //
             }
      }, '-', {
       text:'关闭', iconCls:'icon_cancle', handler: function(){ win.close(); win = null; }
   }]
  });
  win.show();

 

3.表结构

图2

 

4.后台实现

/**
  * 描述:listMenu4CheckBox 菜单复选框树-查看所有
  * @param request
  * @return
  * @CreateOn Jul 19, 2011  4:06:33 PM
  * @author chun_chang
  * @throws Exception
  */
 public List<Map<String, Object>> listMenu4CheckBox(HttpServletRequest request) throws Exception{
  String sql = "";
  String roleId = request.getParameter("roleId");
  // 1.提取当前角色下的所有的菜单ID
  sql = "from cs_role_menu_map where roleId = ?";
  String[] fields = { "menuId", "status" };
  List<Map<String, Object>> listMenuId = this.menuDao.queryForListMap(fields, sql, new Object[] { roleId });

  Map<String, String> statusMap = new HashMap<String, String>();
  for(Map<String, Object> map2: listMenuId) {
   statusMap.put(String.valueOf(map2.get("menuId")), String.valueOf(map2.get("status")));
  }
  
  // 2.取出所有菜单
  sql = "select menuId, menuName,iconCls from cs_menu where parentMenuId = 0 order by menuId";
  return this.subListMenu("0", statusMap);
 }
 
 private List<Map<String, Object>> subListMenu(String pid, Map<String, String> statusMap) throws Exception{
  String sql = "select menuId, menuName,iconCls from cs_menu where parentMenuId = ? order by orderNum";
  List<Map<String, Object>> list = menuDao.getJdbcTemplate().query(sql, new Object[]{pid}, new RowMapper<Map<String, Object>>(){
   
   public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("id", rs.getString("menuId"));
    map.put("text", rs.getString("menuName"));
    map.put("iconCls", rs.getString("iconCls"));
    map.put("checked", "none");
    return map;
   }
   
  });
  for(Map<String, Object> map: list){
   String menuId = String.valueOf(map.get("id"));
   List<Map<String, Object>> list1 = this.subListMenu(menuId, statusMap);
   map.put("children", list1);
   
   String status = statusMap.get(menuId);// status的值为none,part,all-分别对应图片none.gif,part.gif,all.gif
   if(StringUtils.isNotBlank(status)){
    map.put("checked", status);
   }
  }
  return list;
 }

 

 

  • 大小: 8.7 KB
  • src.rar (5.9 KB)
  • 下载次数: 52
  • 大小: 31.3 KB
分享到:
评论

相关推荐

    Ext TreePanel Checked Ext复选框树

    `threeState`属性可以开启三态复选框模式,除了已选中和未选中,还有部分选中状态。 6. **API调用**:`Ext JS`提供了API接口,如`getChecked()`和`setChecked()`,用于获取所有选中的节点或改变特定节点的选中状态...

    基于EXT2.2的下拉复选框

    为了实现复选功能,开发者可能需要自定义或者使用第三方插件,例如`Ext.mm.MultSelect.js`。 `Ext.mm.MultSelect.js`很可能是一个名为"Multiselect"的EXT2.2插件,用于实现多选下拉框。这个插件可能扩展了`Ext.form...

    ext复选框的ColumnTree扩展包

    总的来说,"ext复选框的ColumnTree扩展包"为EXT的ColumnTree组件提供了增强的功能,使得在树形数据结构中进行选择操作变得更加便捷。通过引入这个扩展,开发者可以快速地为自己的EXT应用增加复选框功能,提高用户...

    好用的复选树源码改进版

    该“好用的复选树源码改进版”没有依赖Ext或JQ等重型框架,这意味着它具有更高的灵活性和更低的性能开销。开发者可以更容易地将其集成到任何项目中,无论项目是否已经使用了特定的前端框架。 源码中的主要组成部分...

    ext4实现带复选框的多选下拉框

    总结来说,"ext4实现带复选框的多选下拉框"涉及了前端开发中的CSS样式设计、JavaScript编程、服务器端交互以及可能的第三方库或框架的使用。理解这些知识点,对于开发高效且用户体验良好的Web应用至关重要。

    带复选框的下拉框

    总的来说,"带复选框的下拉框"是一个在Ext JS框架中实现的自定义组件,它提供了在下拉列表中选择多个选项的能力。通过解决不同版本的兼容性问题,这个组件可以在3.2至3.4版本的Ext JS中稳定工作。对于需要多选功能的...

    带复选框的 ExtJs tree

    ### 标签解读:“ext extjs tree 带复选框树” 标签再次强调了主题的核心:ExtJS框架、树形结构(Tree)、以及带复选框功能的树。这些标签有助于读者快速识别文章内容,同时也能提高搜索引擎的抓取效率,使更多有...

    解决Extjs当中复选框全选后,取消选中某一项,全选框仍是选中状态的问题

    EXTJS的`Ext.selection.CheckboxModel`(或简写为`checkboxSelection`)提供了复选框选择模型,用于表格(grid)和其他组件,使得用户可以通过复选框进行多项选择。全选功能通常通过添加一个特殊的复选框来实现,该...

    EXT TREE 扩展CHECKBOX JS

    EXT TREE扩展CHECKBOX JS是一种在EXT JS框架下对树形组件(Tree Panel)进行增强,实现复选框功能的技术。EXT JS是一个强大的JavaScript GUI库,它提供了丰富的组件和功能,用于构建复杂的Web应用程序。在EXT JS中,...

    ext2的可编辑树

    【标题】:“ext2的可编辑树” 在Linux操作系统中,EXT2(Second Extended File System)是一种广泛使用的文件系统,由Rene Rebeau在1992年为Linux内核2.0开发。它是EXT文件系统的后续版本,旨在解决其前代的一些...

    Ext 带多选的Tree

    1. **启用复选框**: 在创建Tree Panel时,添加`checkboxModel`配置,并指定其`threeState`属性,可以开启三态复选(全选、部分选、未选)或二态复选(选与未选)。 ```javascript var treePanel = Ext.create('Ext....

    ext3.x 支持全选半选的树

    "三态树"这个标签可能是指在ext3.x文件系统中,对于树形目录结构进行了扩展,使其能够支持三种状态的节点:未选中、选中和半选中。在文件管理中,全选意味着选择所有项目,半选则通常表示用户选择了部分但不是全部的...

    利用Ext来实现的静态树(一次加载所有节点的树)

    利用Ext实现静态树(一次加载所有节点的树) 在今天的IT行业中,树形结构是一种非常常见的数据结构,尤其是在Web应用程序中。在这种情况下,我们通常会遇到一个问题,即如何将树形结构的数据加载到前台,以便用户...

    ext 级联选择的树形控件

    2. **复选框(check)**:在每个节点上添加复选框,用户可以通过勾选或取消勾选来选择或取消选择节点。这些选择状态可以传递到其子节点,实现级联效果。 3. **级联行为**:当一个节点被选中或取消选中时,其所有子...

    ext js 下拉树

    下拉树(Dropdown Tree)是Ext JS中的一种特殊控件,它结合了下拉列表和树结构的功能,通常用于展示层次化的数据,并让用户从中选择一个或多个项。 下拉树的基本结构由两部分组成:一个文本框和一个关联的下拉面板...

    ext实现动态树

    #### 三、核心代码解析 下面将逐步解析实现动态树形结构的核心代码。 ##### 3.1 创建树加载器 首先,我们需要创建一个`TreeLoader`对象,该对象用于异步加载树的数据。这里我们定义了数据加载的URL: ```...

    Ext树创建说明.rar

    4. ` checkboxes`: 如果需要,可以启用复选框功能。 5. ` viewConfig`: 自定义视图配置,如行样式、拖放行为等。 以下是一个简单的创建Ext树的示例代码: ```javascript Ext.application({ name: 'MyApp', ...

    Ext 2.0 树形机构

    Ext2.0不仅仅实现了复选框的树形菜单,而且使得在选中某个节点时,如果有子节点,那么就能够将所有的字节点全部选中,当然你也可以直接选择你希望的节点。但是,当你第一次选中某个有子节点但是子节点并没有展开的...

Global site tag (gtag.js) - Google Analytics