`
memomemo
  • 浏览: 47394 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

jQuery EasyUI 在datagrid上使用combotree 进行多选

阅读更多
datagrid本身有编辑功能,根据官方说明,在需要编辑的列上,加上editor 属性即可。具体的类型有以下几种:
text,textarea,checkbox,numberbox,validatebox,datebox,combobox,combotree.

最近想利用combotree实现一个可以多选的树,途中遇到一些问题,放到这里分享一下:

1. 基本写法:
editor="{type:'combotree',options:{url:'datagrid_data.json',multiple:true}}"
这里的type指的是编辑器类型,为了实现多选树,我们使用combotree。 options是 combotree的相关选项,注意:由于它扩展自combo和tree ,因此其选项可以从这三种控件中选择。
url指的是数据加载的来源,这里我们就用demo里的datagrid_data.json文件。multiple是实现多选的关键,之前我一直在tree的选项里面找,比如checkbox=true,这个实现tree的多选没有问题,但是在combotree上不起作用,后来找到了combo的选项,试了一下这个multiple,终于解决了问题。

2. 保存数据:
上面写好之后,就可以在datagrid上实现多选树了,但是保存之后你会发现,虽然选中的数据用逗号分隔开了,但是只有第一条数据被保存了。editor使用combotree的源码如下(在jquery.easyui.min.js):
 combotree: {
            init: function(container, options){
                var editor = jQuery('<input type="text">').appendTo(container);
                editor.combotree(options);
                return editor;
            },
            destroy: function(target){
                jQuery(target).combotree('destroy');
            },
            getValue: function(target){
                return jQuery(target).combotree('getValue');
            },
            setValue: function(target, value){
                jQuery(target).combotree('setValue', value);
            },
            resize: function(target, width){
                jQuery(target).combotree('resize', width);
            }
        }

注意看,getValue 和 setValue 方法,他们调用了combotree('getValue');和combotree('setValue', value);通过查看API(combo的Methods)可以发现,getValue和setValue是用来获取和设置单值的,如果要设置和获取多个值,需要getValues,setValues
因此重写一下combotree的扩展:
jQuery.extend(jQuery.fn.datagrid.defaults.editors, {
        combotree: {
            init: function(container, options){
                var editor = jQuery('<input type="text">').appendTo(container);
                editor.combotree(options);
                return editor;
            },
            destroy: function(target){
                jQuery(target).combotree('destroy');
            },
            getValue: function(target){
                var temp = jQuery(target).combotree('getValues');
                //alert(temp);
                return temp.join(',');
            },
            setValue: function(target, value){
                var temp = value.split(',');
                //alert(temp);
                jQuery(target).combotree('setValues', temp);
            },
            resize: function(target, width){
                jQuery(target).combotree('resize', width);
            }
    }
});

也就是说,从combotree获取到的值是以逗号分隔(分隔符可以改,默认是逗号)的字符串,之前的setValue方法只取第一个元素,如果转换成数组,就可以作为参数传递给setValues方法,这样datagrid就全部接收了

OK 经过以上两步,datagrid上直接操作多选树就实现了,当然我们这里只用到了一些就简单的options,如果需要更多的功能,可以参考官方API:
http://www.jeasyui.com/documentation/index.php#
分享到:
评论
3 楼 banxiaobai 2016-05-05  
楼主怎么改分隔符呢???
2 楼 步履不止 2015-01-26  
我试了怎么不行呢?楼主能否说得再详细一点
1 楼 yunchow 2013-08-23  
very nice

相关推荐

    jquery easyui datagrid demo

    这个“jquery easyui datagrid demo”包含了一些关于如何使用 jQuery EasyUI 中 Datagrid 组件的示例和相关文档,帮助我们理解和应用 Datagrid。 首先,`datagrid.doc` 文件很可能是 Datagrid 的简要说明文档,它...

    jQuery EasyUI编辑DataGrid用combobox实现多级联动

    本文主要探讨的是如何利用jQuery EasyUI的DataGrid和combobox组件实现多级联动的效果,这对于在数据录入时需要根据上一级选择动态更新下一级选项的情况非常有用,比如在本例中的“老师分类”和“老师细类”。...

    扩展 jQuery EasyUI Datagrid 数据行鼠标悬停离开事件完整版Demo下载

    jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) Demo 扩展 jQuery EasyUI Datagrid 数据行鼠标悬停离开事件,源码奉献!!!

    easyui_combotree_search

    在"easyui_combotree_search"项目中,jQuery是基础,用于处理页面元素的交互和动态效果。 2. **EasyUI**:EasyUI是基于jQuery的UI框架,提供了丰富的组件,如对话框、表格、下拉列表、树形控件等,极大地提高了开发...

    jquery.easyui.datagrid扩展合并列

    jquery.easyui.datagrid自动合并列扩展,支持多列合并。 用法:加载成功后 $('#'+tab).datagrid("autoMergeCells",['列名','列名']);

    easyui的datagrid生成合并行,合计计算价格

    在描述中提到的"easyui的datagrid生成合并行,合计计算价格",指的是如何使用EasyUI的DataGrid组件来实现表格数据的行合并以及总价的计算功能。以下是对这个知识点的详细解释: 1. EasyUI DataGrid组件: EasyUI的...

    Easyui-DataGrid表头拖动效果

    UI设计在一个系统中的重要性是不容忽视的,我们开发人员要做到:让用户去控制计算机,而不是计算机控制用户;减少用户的记忆负担;保持界面一致。 给你的Easyui-DataGrid 表头添加一点料吧 Easyui-Datagrid—表头...

    JqueryEasyUI DataGrid例子

    在这个例子中,我们将深入探讨如何使用 jQuery EasyUI 的 DataGrid 实现表格的增删改查功能,并结合后台的 Servlet 进行数据处理。 首先,`DataGrid` 是一个可滚动、可排序、可分页的表格控件,可以展示大量数据。...

    easyui datagrid 数据导出到Excel

    在IT行业中,EasyUI Datagrid是一款基于jQuery的前端数据展示组件,它提供了丰富的表格功能,如排序、分页、过滤等。在实际工作中,我们经常需要将这些展示的数据导出到Excel文件,以便进行进一步的分析或存储。下面...

    easyui datagrid 多条件筛选 可复选 类似淘宝筛选

    在IT领域,EasyUI是一个基于jQuery的前端框架,它提供了丰富的UI组件,如datagrid,用于构建用户界面。本文将深入探讨如何使用EasyUI datagrid实现多条件筛选功能,特别是支持可复选的筛选条件,类似于淘宝网站上的...

    jquery easyui datagrid性能优化

    jquery easyui datagrid 性能优化,优化后可快速提升查询性能。唯一的缺陷就是不支持可编辑grid了。只需要在引入easyui.js后面引入此js即可。

    easyui datagrid 增加鼠标悬停弹窗事件

    在本示例中,我们关注的是如何在EasyUI的Datagrid组件上添加一个特殊功能:当鼠标悬停在某一行时,弹出一个窗口显示该行的关键信息,例如用于图片预览。以下是对这个知识点的详细解释: 1. **EasyUI Datagrid**: ...

    jquery easyui 表头固定 datagrid 弹出框 AJAX刷新页面

    标题 "jquery easyui 表头固定 datagrid 弹出框 AJAX刷新页面" 涉及的是在网页开发中使用jQuery EasyUI库实现的功能。jQuery EasyUI是一个基于jQuery的UI框架,它提供了一系列易于使用的组件,如datagrid(数据网格...

    easyui-datagrid之间拖拽效果demo

    在前端开发中,EasyUI 是一个基于 jQuery 的 UI 框架,它提供了一系列易于使用的组件,如对话框、表单、菜单、树形结构等,帮助开发者快速构建用户界面。"easyui-datagrid 之间拖拽效果 demo" 重点展示了如何在两个 ...

    easyui datagrid 动态隐藏显示列

    jquery easyui 扩展 datagrid 自定义动态隐藏显示列

    EasyUI的DataGrid显示ASP.NET内容

    在客户端,使用jQuery和EasyUI配置DataGrid,设置URL以获取服务器端数据,并定义列显示: ```javascript $(function () { $('#dataGrid1').datagrid({ url: 'YourASPNETPage.aspx?page=1', // 调用ASP.NET页面...

    easyui的下拉框多选

    EasyUI是基于jQuery的一个轻量级且易于使用的前端框架,它提供了丰富的组件库,包括我们今天要讨论的多选下拉框(ComboBox)。 EasyUI的ComboBox组件可以实现单选和多选两种模式。在多选模式下,用户可以勾选多个...

    jquery-easyui-datagrid

    在标题 "jquery-easyui-datagrid" 中,我们关注的是 `datagrid` 这个组件,它是 jQuery EasyUI 库中的一个核心元素。`datagrid` 提供了类似于电子表格的视图,用于展示和操作数据库或其他数据源中的表格数据。 **一...

    jquery easyui datagrid demo 详解

    本篇文章将详细解析 jQuery EasyUI Datagrid 的使用,包括增、删、改、查的基本操作。 首先,Datagrid 是一个表格控件,它可以用来显示大量的结构化数据,并支持分页、排序、过滤等功能。在创建 Datagrid 时,我们...

    jquery easyui 帮助文档

    这个“jQuery EasyUI 帮助文档”包含了全面的API参考和使用指南,对于开发者来说是极具价值的资源。 jQuery EasyUI 的核心在于其组件系统,这些组件包括但不限于数据网格(datagrid)、下拉菜单(combobox)、...

Global site tag (gtag.js) - Google Analytics