//---民族
{
field: 'NMK07', title: '民族', width: 100, sortable: true,
editor: {type: 'combobox', options: {
required: true,
//formatter: unitformatter,
url: '/handler/dict.ashx?flag=tree&t=Nation', parentField: 'pid',
textFiled: 'text',
valueField: 'id',
method: 'get',
lines: true,
editable: false,
panelHeight: 130,
panelMaxWidth: 200
}
}
},
//----------------
url获取到的是json格式,内容如下:
[{"id":0,"pid":-1,"text":"请选择"},{"id":3,"pid":-1,"text":"123"},{"id":2,"pid":-1,"text":"民族1"}]
数据库中NMK07字段为int字段,用于存储对应民族表的ID,这样就导致在dategrid的时候显示NMK07直接显示的是ID值,而不是对应民族的名称
如果后台生成json时就获取成名族名称的话,在编辑列数据时,combobox里又无法获取得到民族的ID
请问,这样的情况如何处理?
datagrid默认显示时需要民族的名称,编辑时又需要的是民族的ID,同一个列的情况下,该怎么办呢?
你用一个script标签加载/handler/dict.ashx?flag=tree&t=Nation这个页面在页面上生成名族的json数组对象,然后你的editor不需要指定url了,直接使用data配置指向这个数据即可,可以大大提高效率,不需要每次用ajax加载
如你ashx原来输出[{}...]这个格式的数据,变成var arrMZ=[{}....]这种,然后用script加载你的这个动态页
<script src="/handler/dict.ashx?flag=tree&t=Nation"></script>
,这样arrMZ就是存储你名族的json对象数组了
editor: {type: 'combobox', options: {
required: true,
//formatter: unitformatter,
//url: '/handler/dict.ashx?flag=tree&t=Nation', parentField: 'pid',
data:arrMZ//////这样配置本地数据就可以了
然后给datagrid配置formatter,遍历arrMZ对比传入的value返回对应的显示值
{
field: 'NMK07', title: '民族', width: 100, sortable: true,
formatter:function(v){
for(var i=0;i<arrMZ.length;i++){
if(arrMZ[i]['id']==v)return arrMZ[i]['text']
}
}
网上有方法formatter
function unitFormatter(value, rowData, rowIndex) {
if (value == 0) {
return "";
}
for (var i = 0; i < unitJSON.length; i++) {
if (unitJSON[i].value == value) {
return unitJSON[i].name;
}
}
return value;
}
但是实际情况中json是从数据库提取出来的url: '/handler/dict.ashx?flag=tree&t=Nation',
不知道这个unitFormatter怎么做
http://yixibo.iteye.com/blog/1557847
使用formatter,佛matter能传入这行数据的实体,你在查询实体的时候,设置一个字段作为显示内容的字段,formatter的时候,return对应的文字即可