`
yycao
  • 浏览: 15491 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Easyui Datagrid editor 的几个问题

阅读更多
  首先贴一段自己写得一个datagrid的函数:
function createDatagrid(teamid){
	
    $('#ttt').datagrid({
        title: '团队角色信息',
        width: 750,
        singleSelect: "true",
        idField: "characterid",
        toolbar: '#tb2',
        fitColumns: "true",
        url: 'atatincharacterjson.action?teamid=' + teamid,
        columns: [[
                {field: 'characterid',title: 'ID',hidden: 'false',align: 'center',width: 50}, 
                {field: 'team',title: '团队简称',align: 'center',width: 150,
                    formatter: function(value) {
                        for (var i = 0; i < team_shortnames.length; i++) {
                            if (team_shortnames[i].id == value)
                                return team_shortnames[i].shortname;
                        }
                        return value;
                    }
                    ,
                    editor: {
                        type: 'combobox',
                        options: {
                            valueField: 'id',
                            textField: 'shortname',
                            data:team_shortnames,
                            //url: 'atainallteamshortnamesjson.action',
                            required: true
                        }
                    }
                }, 
                {field: 'character',title: '角色',align: 'center',width: 150,
                    editor: {type: 'text'}
                }, 
                {field: 'staff_member_String',title: '成员(员工)',align: 'center',width: 150,
                    formatter: function(value) {
                        for (var i = 0; i < staffs.length; i++) {
                            if (staffs[i].id == value)
                                return staffs[i].username;
                        }
                        return value;
                    }
                    ,
                    editor: {
                        type: 'combobox',
                        options: {
							multiple:"multiple",
                            valueField: 'id',
                            textField: 'username',
                            data: staffs,
                            //url:'atainstaffinteamjson?teamid='+currentRow.id,
                            required: true
                        }
                    }
                }, 
                {field: 'group_member_String',title: '成员(工作组)',align: 'center',width: 150,
                    formatter: function(value) {
                        for (var i = 0; i < groups.length; i++) {
                            if (groups[i].groupid == value)
                                return groups[i].groupname;
                        }
                        return value;
                    }
                    ,
                    editor: {
                        type: 'combobox',
                        options: {
                            valueField: 'groupid',
                            textField: 'groupname',
                            data: groups,
                            //url:'atainallworkgroupjsonbyteamid.action?teamid=1',
                            required: true
                        }
                    }
                }, 
                {field: 'action',title: '操作',align: 'center',width: 100,
                    formatter: function(value, row, index) {
                        if (row.editing) {
                            var s = '<a href="#" onclick="saverow2(' + index + ')">Save</a> ';
                            var c = '<a href="#" onclick="cancelrow2(' + index + ')">Cancel</a>';
                            return s + c;
                        } else {
                            var e = '<a href="#" onclick="editrow2(' + index + ')">Edit</a> ';
                            var d = '<a href="#" onclick="deleterow2(' + index + ')">Delete</a>';
                            return e + d;
                        }
                    }
                
                }
            ]]
    });
}

//其中一个获取数据的Ajax
$.ajax({
	url:"atainstaffinteamjson.action?teamid="+currentRow.id,
	type:"get",
	async:false,
	dataType:"json",
	success:function(data){
		staffs=data;
		}
	});

其中用到了editor,toolbar,从struts2的action取数据等操作。下面就几个遇到的问题进行下记录:
1.ajax一定要同步,不能异步,不然staffs等可能得不到值就创建了datagrid;
2.combobox的数据使用data时,ajax返回类型一定要是json对象,不能是字符串,如果在editor中直接使用url获取数据而不是data的话,url指向的Action应该返回String类型的值。这两者不同,千万注意。
3.用combobox editor会造成选择某个新项后在原来的地方显示是valueField,而不是textField,这时候必须要使用formatter来修正显示内容。
4.combobox 可以多选的,只需在options中增加multiple:"multiple",即可。
5.combobox多行选择时需要下面函数来覆盖自带的setvalue():
	$.extend($.fn.datagrid.defaults.editors.combobox, {
		getValue : function(jq) {
			var opts = $(jq).combobox('options');
			if(opts.multiple){
				var values = $(jq).combobox('getValues');
				if(values.length>0){
					if(values[0]==''||values[0]==' '){
						return values.join(',').substring(1);//新增的时候会把空白当成一个值了,去掉
					}
				}
				return values.join(',');
			}
			else
				return $(jq).combobox("getValue");
		},
		setValue : function(jq, value) {
			var opts = $(jq).combobox('options');
			if(opts.multiple&&value.indexOf(opts.separator)!=-1){//多选且不只一个值
				var values = value.split(opts.separator);
				$(jq).combobox("setValues", values);
			}
			else
				$(jq).combobox("setValue", value);
		}
	});
分享到:
评论
1 楼 无赖二号 2013-09-10  
非常好,非常感谢,感谢分享!

相关推荐

    easyui的datagrid中editor和combobox的级联

    ### easyui的datagrid中editor和combobox的级联 在前端开发中,easyui是一个非常实用的库,它提供了一套完整的用户界面组件,能够帮助开发者快速构建出功能丰富的Web应用。其中,`datagrid`是easyui提供的一个重要...

    easyui DataGrid动态编辑

    首先,要实现DataGrid的动态编辑,我们需要了解几个关键配置项和方法: 1. **editable**:这是DataGrid的属性,设置为`true`时,将启用行级别的编辑功能。例如: ```html 动态编辑" iconCls="icon-ok" width=...

    easyui DataGrid 数据表格 属性

    在 EasyUI 的 DataGrid 中,以下几个关键属性是尤为重要的: 1. **title**:定义 DataGrid 的标题,可以通过这个属性设置表格上方的显示文字。 2. **idField**:指定数据中用于唯一标识每一行的字段名,这对于数据...

    easyui datagrid 大数据加载效率慢,优化解决方法(推荐)

    在开发Web应用时,使用EasyUI的datagrid组件展示大量数据时,可能会遇到加载效率低下的问题。本文主要探讨如何针对EasyUI datagrid进行性能优化,以解决大数据量加载慢的问题。 首先,我们需要理解问题的根源。当...

    EasyUI 1.3.1动态表格列示例

    动态表格列的实现通常包括以下几个关键步骤: 1. **数据准备**:首先,你需要准备包含所有可能列的数据源。这些数据源可以是服务器返回的JSON对象,包含每列的字段名、标题、宽度等信息。 2. **HTML结构**:创建一...

    easyUI行内可编辑

    在 EasyUI 中,实现行内编辑通常涉及到以下几个关键知识点: 1. **表格(Grid)组件**:EasyUI 的表格组件可以展示大量数据,并支持分页、排序、过滤等功能。在创建表格时,我们需要定义列(columns)和数据源...

    jquery-easyui

    在提供的压缩包文件中,我们可以看到与`jQuery EasyUI`相关的几个关键元素: 1. **editable-datagrid.html**:这是一个HTML文件,展示了`jQuery EasyUI`中的可编辑DataGrid组件。DataGrid是用于展示和管理大量数据...

    cellEditing_in_datagrid.zip

    EasyUI是一个基于jQuery的轻量级前端框架,它提供了一系列组件,包括DataGrid,用于展示和管理数据。DataGrid是一个功能强大的表格控件,支持排序、分页、过滤等多种功能,并且可以通过设置编辑器实现单元格级别的...

    jQuery easyui datagird编辑行删除行功能的实现代码

    在提供的代码片段中,`$("#dg")`是一个DataGrid实例,它的配置包括以下几个关键部分: 1. `url`: 指定数据来源,这里是一个后台接口,用于获取表格数据。 2. `fitColumns`: 是否使列自适应宽度,如果为`false`,则...

    浅谈EasyUI中编辑treegrid的方法

    总的来说,编辑EasyUI TreeGrid涉及以下几个步骤: 1. 定义TreeGrid的列配置,包括列的显示属性和编辑器类型。 2. 配置编辑器的选项,如数据源、编辑状态和验证规则。 3. 监听用户交互,如选择事件和单元格点击事件...

Global site tag (gtag.js) - Google Analytics