Easyui datagrid 编辑结束时combobox显示value而不显示text



在调用datgrid编辑结束时 

$('#dg').datagrid('endEdit', editIndex);

datagrid的combobox会显示出value,

这是因为easyui在我们编辑结束时为了方便使用更改的值而记录下了combobox的value而不是text

                var inserted = $("#dg").datagrid('getChanges', "inserted");
                var deleted = $("#dg").datagrid('getChanges', "deleted");
                var updated = $("#dg").datagrid('getChanges', "updated");

获取到更改在传会后台使用倒是方便,但是显示出来是value很不舒服,


解决方法一(不推荐):

这是我们可以使用formatter来格式化输出

因为无论是加载数据与编辑结束时datagrid都会执行formatter函数,所以我们可以用它来输出我们想要的内容,

而且combobox的数据采用data方式而不直接使用url

会员等级
var comboboxData = "";

        function GetLevelDTAJ()
        {
            $.ajax({
                url: "xx",
                type: 'get',
                async: false,//此处必须是同步
                dataTye: 'json',
                success: function (data) {
                    comboboxData = data;
                }
            })
            return comboboxData;
        }

        function fmLevelAJ(value, row) {
            console.log(comboboxData);
            for (var i = 0; i < comboboxData.length; i++) {
                if (comboboxData[i].UserLevelId == value) {
                    return comboboxData[i].UserLevelName;
                }
            }
            return row.UserLevelId;
        }

原来的写法

会员等级


解决方法二:

回台返回一个值,当然不好解决,但是可以在后台查询出键值对,显示用值,返回用

1:必须要把键值都查询出来field写键,formatter写值

ID',
                               textField:'Company',
                               url:'/Membership/GetCompanyList',
                               editable:false        
                            }
                        }">公司名称


       一般这样就可以了,但是有时间需要编辑多条的时候需要进行下第二条


2:在编辑结束前,得到对应的Combobox赋值一次

 var ed = $('#dg').datagrid('getEditor', { index: editIndex, field: 'ID' });  //editIndex编辑时记录下的行号
                if (ed != null) {
                    var Company = $(ed.target).combobox('getText');
                    $('#dg').datagrid('getRows')[editIndex]['Company'] = Company;
                }
                $('#dg').datagrid('endEdit', editIndex);


完整一点的代码

function endEditing() {
            if (editIndex == undefined) { return true }
            if ($('#dg').datagrid('validateRow', editIndex)) {

                var ed = $('#dg').datagrid('getEditor', { index: editIndex, field: 'ID' });  //editIndex编辑时记录下的行号
                if (ed != null) {
                    var Company = $(ed.target).combobox('getText');
                    $('#dg').datagrid('getRows')[editIndex]['Company'] = Company;
                }


                $('#dg').datagrid('endEdit', editIndex);
                editIndex = undefined;


                return true;
            }
            else {return false;}
        }



你可能感兴趣的:(easy,ui)