頁面顯示效果:html
html頁面設置datagrid的field字段:數組
userList是從struts2傳到前臺的一個集合,該集合是用戶的集合,每一個用戶有一個消耗,field根據userList來設置多個消耗字段函數
<s:iterator value="userList" id="user" status='s'> <s:if test="(#s.index+1)==userList.size()"> <th field="consumptions<s:property value='%{#s.index+1}'/>" width="75" sortable="false" align="center" editor="{type:'numberbox',options:{precision:3}}" formatter="consumption2Formatter">終審<s:hidden uname='%{#user.id}' value="%{#user.id}" theme="simple"/></th> </s:if> <s:else> <th field="consumptions<s:property value='%{#s.index+1}'/>" width="75" sortable="false" align="center" editor="{type:'numberbox',options:{precision:3}}" formatter="consumption2Formatter"><s:property value="#s.index+1"/>審<s:hidden uname='%{#user.id}' value="%{#user.id}" theme="simple"/></th> </s:else> </s:iterator>
在JS中formatter函數的設置:(在userList中的每一個用戶對應的消耗的格式爲:1審,2審...,最後面爲終審,這裏是根據1,2...在consumption2Formatter中設置索引值,來獲取row.consumptions中取值,row.consumptions是每一個用戶的消耗集合,它是一個數組,和userList集合對應)ui
/** * 從row的consumptions中根據索引值num取對應的消耗值 */ function consumption2Formatter(value, row,rowIndex){ var title = this.title; title = title.substring(0,title.indexOf("審")); var num = title.replace(/[^0-9]/ig,""); if(!num || num==""){ //代表爲終審 num = row.consumptions[row.consumptions.length-1]; }else{ num = row.consumptions[parseInt(num)-1]; } return num; }
easyui的datagrid的雙擊事件:this
onDblClickCell: function(rowIndex, field, value){ }
若是利用formatter設置顯示的內容的時候,在該事件中會發現value爲undefined,那麼在onDblClickCell函數中如何獲取單元格的實際值呢?code
/** * @table datagrid的id字符串 * @param rowIndex 被雙擊的行的索引值 * @param field 被雙擊的行的字段名 */ function getFormatterValue(table,rowIndex,field){ var val = $("#datagridPanel").find("#datagrid-row-r1-2-"+rowIndex+"").find(".datagrid-cell.datagrid-cell-c1-"+field+"").text(); return parseFloat(val); }
能夠F12在控制檯,查看datagrid的元素組成,ID爲datagrid-row-r1-2-"+rowIndex+"獲取td,而後td中是一個div,在div中是formatter中設置的顯示內容orm
datagrid的大體結構如上htm