easyui的datagrid的某個field的取值是一個數組,如何利用formatter循環設置field和顯示

頁面顯示效果: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

相關文章
相關標籤/搜索