사용자 정의 함수
SBGrid는 사용자 정의 함수를 통한 수식 계산 기능을 제공합니다.
요약
callback 을 사용할수 있게 하여 수식계산 기능이 가능한 사용자 정의 함수를 제공합니다.입력값
"calc" : "sum()" 컬럼정보를 담고 있는 오브젝트의 해당 컬럼에 사용자정의함수를 추가합니다.
예) datagrid2.addColumn("ref:average; type:output; calc:sum(); text-align:right");
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko"> <head> <meta content="IE=9" http-equiv="X-UA-Compatible"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>SoftBowl SBGrid Example</title> <script type="text/javascript" src="../../kr/co/softbowl/js/Library/json-minified.js"></script> <script type="text/javascript" src="../../js/jquery-1.7.2.min.js"></script> <script type="text/javascript" src="../../kr/co/softbowl/js/Library/json2.js"></script> <script type="text/javascript" src="../../kr/co/softbowl/SBGrid.js"></script> <script type="text/javascript" src="../../js/DATA_World_Bank_Statistics_small.js"></script> <script type="text/javascript"> SBGrid.DEF.DOMAIN = "../../"; <script> <script type="text/javascript"> var datagrid1; function __createElements (){ var objJson = { "strParentId" : "sbGridArea", "strId": "datagrid1", "strCaption": "Year^CO2 emissions^Electric power consumption", "strColWidth": "100,140,238", "strJsonRef": "grid_data", "strStyle": "width:700px; height:265px; ", "bAutoResize" : true, "strRowHeader" : "seq" }; datagrid1 = createSBDataGrid(objJson); var objCol = [ { "id": "col2", "type": "output", "ref": "Year", "style" : "text-align:center" }, { "id": "col3", "type": "output", "ref": "CO2emissions" }, { "id": "col4", "type": "output", "ref": "Electric_power_consumption" } ]; datagrid1.createColumns(objCol); datagrid1.setRowHeight(0,60,false); } function sum(strId, nRow, nCol) { var strValue1 = ""; eval('strValue1 = ' + strId + '.getTextMatrix(nRow, nCol-2);'); var strValue2 = ""; eval('strValue2 = ' + strId + '.getTextMatrix(nRow, nCol-1);'); var result = parseInt(strValue1) + parseInt(strValue2); return result.toString(); } function average(strId, nRow, nCol) { var strValue = ""; eval('strValue = ' + strId + '.getTextMatrix(nRow, nCol-1);'); var nSum = parseInt(strValue); var fAverage = nSum / 2; return parseInt(fAverage).toString(); } var isExecutedGetTotal = false; function getTotal() { if (!isExecutedGetTotal) { datagrid1.addColumn("ref:total; type:output; calc:sum(); text-align:right"); datagrid1.setCaption(datagrid1.getCaption() + "total"); datagrid1.refresh(); isExecutedGetTotal = true; } } var isExecutedGetAverage = false; function getAverage() { if (!isExecutedGetAverage) { datagrid1.addColumn("ref:average; type:output; calc:average(); text-align:right"); datagrid1.setCaption(datagrid1.getCaption() + "average"); datagrid1.refresh(); isExecutedGetAverage = true; } } </script> </head> <body onload="__createElements()" class="sbgrid_body"> <div id="button_group"> <input type="button" class="sbgrid_demo_button" style="width:700px; height:30px;" id="button_subtotal" value="행 별 합계 및 평균 구하기" onclick="getTotal();getAverage();datagrid1.refresh();"></input> </div> <div class="content_group"> <div id="sbGridArea" style="width:700px;"></div> </div> </body> </html>