在调用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写值
一般这样就可以了,但是有时间需要编辑多条的时候需要进行下第二条
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;}
}