//---民族
{
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']
}
}