今天用 EasyUI datagrid 來做列表,要對一些數據進行格式化,判斷某字段狀態時,發現 formatter 格式化對應的函數不起作用。
<table id="list_data" title="未審核報表" class="easyui-datagrid" style="width: auto;height:350px;" url="" toolbar="#toolbar" pagination="true" pagesize="10" total="20" rownumbers="true" fitcolumns="true" singleselect="true" pagelist="[10,20]" loadmsg="正在努力加載數據,請稍后..."> <thead> <tr> <th data-options="field:'報表名稱',width:200,align:'center'">報表名稱</th> <th data-options="field:'報表分組',width:80,align:'center'">報表分組</th> <th data-options="field:'報表類型',width:80,align:'center'">報表類型</th> <th data-options="field:'報表分類',width:80,align:'center'">報表分類</th> <th data-options="field:'制表人',width:80,align:'center'">上報人</th> <th data-options="field:'實際報出日期',width:90,align:'center'" formatter="ChangeDateFormat">上報時間</th> <th data-options="field:'填報單位',width:80,align:'center'">上報單位</th> <th data-options="field:'審核狀態',width:80,align:'center'">審核狀態</th> <th data-options="field:'審核狀態',width:80,align:'center'" formatter="managerstr">操作</th> </tr> </thead> </table>
出問題是這句:
<th data-options="field:'審核狀態',width:80,align:'center'" formatter="managerstr">操作</th>
后來檢查發現 : 如果某列的 field值,在前面已經出現過,則后出現的同field列,在這里,我的是 “審核狀態”,將按第一次出現的field列使用。如果第一次出現的field同值的列沒有formatter,后續的formatter將無效。
處理辦法,function(value,rowData,rowIndex) 第二個參數rowData.屬性名訪問、
function managerstr(value,rowData,rowIndex) { if (rowData["審核狀態"] == "未審核") return "1"; else if (rowData["審核狀態"] == "已取回重填") return "2"; else return "已經審核,不允許操作"; }