在调用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
<th data-options="field:'UserLevelId',width:100,
formatter:fmLevelAJ,
editor:{
type:'combobox',
options:{
textField:'UserLevelName',
valueField:'UserLevelId',
data:GetLevelDTAJ(),
editable:false
}
}">会员等级</th>
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;
}
原来的写法
<th data-options="field:'UserLevelId',width:100,
formatter:function fmLevelAJ(value, row) {
return row.UserLevelId;
},
editor:{
type:'combobox',
options:{
textField:'UserLevelName',
valueField:'UserLevelId',
url:'xx',
editable:false
}
}">会员等级</th>
解决方法二:
回台返回一个值,当然不好解决,但是可以在后台查询出键值对,显示用值,返回用键
1:必须要把键值都查询出来field写键,formatter写值
<th data-options="field:'ID',width:120, --键用于返回回台
formatter:function(value,row){
return row.Company; --值用于显示
},
editor:{
type:'combobox',
options:{
valueField:'ID',
textField:'Company',
url:'/Membership/GetCompanyList',
editable:false
}
}">公司名称</th>
一般这样就可以了,但是有时间需要编辑多条的时候需要进行下第二条
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;}
}