A26 이벤트 이해하기(Events)
들어가며
이번 강좌에서는 이벤트에 대한 기본적인 이해를 돕기 위한 예제를 실습해 보겠습니다.
이론
RealGrid는 각각의 객체가 가지고 있는 많은 이벤트가 있습니다. 이벤트는 사용자가 그리드를 클릭하거나 값을 입력하는등 동작을 수행할때 그리드가 호출해 주는 콜백 함수 입니다.
이번 강좌에서는 GridView객체의 영역을 클릭(Click) 또는 더블클릭(Double Click) 할때 발생하는 이벤트 콜백함수를 구현하고 클릭된 인자의 정보를 팝업하는 예제를 구현해 보겠습니다.
실습
-
GridView의 영역별 클릭 또는 더블클릭 이벤트 콜백 함수를 구현합니다.
//log를 alert하는 함수 function showLog(log){ alert(log); } gridView.onColumnHeaderClicked = function (grid, column) { showLog("onColumnHeaderClicked: " + "(" + column.name + ")"); }; gridView.onColumnHeaderDblClicked = function (grid, column) { showLog("onColumnHeaderDblClicked: " + "(" + column.name + ")"); }; gridView.onColumnCheckedChanged = function (grid, column, checked) { showLog("onColumnCheckedChanged: " + "(" + column.name + ", " + checked + ")"); }; gridView.onDataCellClicked = function (grid, index) { showLog("onDataCellClicked: " + JSON.stringify(index)); }; gridView.onDataCellDblClicked = function (grid, index) { showLog("onDataCellDblClicked: " + JSON.stringify(index)); }; gridView.onFooterCellClicked = function (grid, column) { showLog("onFooterCellClicked : " + "(" + column.name + ")"); }; gridView.onFooterCellDblClicked = function (grid, column) { showLog("onFooterCellDblClicked : " + "(" + column.name + ")"); }; gridView.onItemChecked = function (grid, itemIndex, checked) { showLog("onItemChecked: " + itemIndex + ", " + checked); }; gridView.onItemsChecked = function (grid, items, checked) { showLog("onItemsChecked: " + items + ", " + checked); }; gridView.onItemAllChecked = function (grid, checked) { showLog("onItemAllChecked: " + checked); }; gridView.onCheckBarFootClicked = function (grid) { showLog("onCheckBarFootClicked"); }; gridView.onIndicatorCellClicked = function (grid, index) { showLog("onIndicatorCellClicked : " + "(" + index + ")"); }; gridView.onStateBarCellClicked = function (grid, index) { showLog("onStateBarCellClicked : " + "(" + index + ")"); }; gridView.onRowGroupHeadFootClicked = function (grid, index) { showLog("onRowGroupHeadFootClicked : " + "(" + index + ")"); }; gridView.onRowGroupHeaderFooterClicked = function (grid, index) { showLog("onRowGroupHeaderFooterClicked : " + "(" + index + ")"); }; gridView.onRowGroupBarClicked = function (grid, index) { showLog("onRowGroupBarClicked : " + "(" + index + ")"); }; gridView.onCheckBarFootDblClicked = function (grid) { showLog("onCheckBarFootDblClicked"); }; gridView.onIndicatorCellDblClicked = function (grid, index) { showLog("onIndicatorCellDblClicked : " + "(" + index + ")"); }; gridView.onStateBarCellDblClicked = function (grid, index) { showLog("onStateBarCellDblClicked : " + "(" + index + ")"); }; gridView.onRowGroupHeadFootDblClicked = function (grid, index) { showLog("onRowGroupHeadFootDblClicked : " + "(" + index + ")"); }; gridView.onRowGroupHeaderFooterDblClicked = function (grid, index) { showLog("onRowGroupHeaderFooterDblClicked : " + "(" + index + ")"); }; gridView.onRowGroupBarDblClicked = function (grid, index) { showLog("onRowGroupBarDblClicked : " + "(" + index + ")"); }; gridView.onPanelClicked = function (grid, index) { showLog("onPanelClicked : " + "(" + index + ")"); }; gridView.onPanelDblClicked = function (grid, index) { showLog("onPanelDblClicked : " + "(" + index + ")"); }; gridView.onRowGroupPanelClicked = function (grid, column) { showLog("onRowGroupPanelClicked : " + "(" + column.name + ")"); }; gridView.onRowGroupPanelDblClicked = function (grid, column) { showLog("onRowGroupPanelDblClicked : " + "(" + column.name + ")"); };
실행화면
- 그리드의 영역을 클릭 또는 더블클릭 하여 발생하는 이벤트를 확인하세요.
전체 소스코드
SCRIPT
<link rel="stylesheet" href="/css/bootstrap.css"> <script type="text/javascript" src="/script/jquery-1.112.min.js"></script> <script type="text/javascript" src="/script/bootstrap.min.js"></script> <!--realgrid--> <script type="text/javascript" src="/script/realgridjs-lic.js"></script> <script type="text/javascript" src="/script/realgridjs_eval.1.0.14.min.js"></script> <script type="text/javascript" src="/script/realgridjs-api.1.0.14.js"></script> <script> var gridView; var dataProvider; $(document).ready( function() { RealGridJS.setTrace(false); RealGridJS.setRootContext("/script"); dataProvider = new RealGridJS.LocalDataProvider(); gridView = new RealGridJS.GridView("realgrid"); gridView.setDataSource(dataProvider); //다섯개의 필드를 가진 배열 객체를 생성합니다. var fields = [ { fieldName: "field1" }, { fieldName: "field2" }, { fieldName: "field3" }, { fieldName: "field4" }, { fieldName: "field5" }, { fieldName: "field6" }, { fieldName: "field7" }, { fieldName: "field8" }, { fieldName: "field9" }, { fieldName: "field10" } ]; //DataProvider의 setFields함수로 필드를 입력합니다. dataProvider.setFields(fields); //필드와 연결된 컬럼 배열 객체를 생성합니다. var columns = [ { name: "col1", fieldName: "field1", header : { text: "직업" }, width : 60 }, { name: "col2", fieldName: "field2", header : { text: "성별" }, width: 50 }, { name: "col3", fieldName: "field3", header : { text: "이름" }, width: 80 }, { name: "col4", fieldName: "field4", header : { text: "국어" }, width: 80 }, { name: "col5", fieldName: "field5", header : { text: "수학" }, width: 80 }, { name: "col6", fieldName: "field6", header : { text: "민법" }, width: 80 }, { name: "col7", fieldName: "field7", header : { text: "한국사" }, width: 80 }, { name: "col8", fieldName: "field8", header : { text: "영어" }, width: 80 }, { name: "col9", fieldName: "field9", header : { text: "과학" }, width: 80 }, { name: "col10", fieldName: "field10", header : { text: "사회" }, width: 80 } ]; //컬럼을 GridView에 입력 합니다. gridView.setColumns(columns); var data = [ ["가수", "여자", "정수라", "80", "99", "90", "90", "100", "100", "90"], ["배우", "여자", "송윤아", "10", "33", "90", "70", "60", "100", "80"], ["배우", "여자", "전도연", "20", "22", "90", "70", "60", "100", "80"], ["가수", "여자", "이선희", "40", "33", "90", "70", "60", "100", "80"], ["배우", "여자", "하지원", "10", "11", "90", "70", "60", "100", "80"], ["가수", "여자", "소찬휘", "30", "55", "90", "70", "60", "100", "80"], ["가수", "여자", "박정현", "40", "22", "90", "70", "60", "100", "80"], ["배우", "여자", "전지현", "20", "44", "90", "70", "60", "100", "80"] ]; dataProvider.setRows(data); function showLog(log){ alert(log); } gridView.onColumnHeaderClicked = function (grid, column) { showLog("onColumnHeaderClicked: " + "(" + column.name + ")"); }; gridView.onColumnHeaderDblClicked = function (grid, column) { showLog("onColumnHeaderDblClicked: " + "(" + column.name + ")"); }; gridView.onColumnCheckedChanged = function (grid, column, checked) { showLog("onColumnCheckedChanged: " + "(" + column.name + ", " + checked + ")"); }; gridView.onDataCellClicked = function (grid, index) { showLog("onDataCellClicked: " + JSON.stringify(index)); }; gridView.onDataCellDblClicked = function (grid, index) { showLog("onDataCellDblClicked: " + JSON.stringify(index)); }; gridView.onFooterCellClicked = function (grid, column) { showLog("onFooterCellClicked : " + "(" + column.name + ")"); }; gridView.onFooterCellDblClicked = function (grid, column) { showLog("onFooterCellDblClicked : " + "(" + column.name + ")"); }; gridView.onItemChecked = function (grid, itemIndex, checked) { showLog("onItemChecked: " + itemIndex + ", " + checked); }; gridView.onItemsChecked = function (grid, items, checked) { showLog("onItemsChecked: " + items + ", " + checked); }; gridView.onItemAllChecked = function (grid, checked) { showLog("onItemAllChecked: " + checked); }; gridView.onCheckBarFootClicked = function (grid) { showLog("onCheckBarFootClicked"); }; gridView.onIndicatorCellClicked = function (grid, index) { showLog("onIndicatorCellClicked : " + "(" + index + ")"); }; gridView.onStateBarCellClicked = function (grid, index) { showLog("onStateBarCellClicked : " + "(" + index + ")"); }; gridView.onRowGroupHeadFootClicked = function (grid, index) { showLog("onRowGroupHeadFootClicked : " + "(" + index + ")"); }; gridView.onRowGroupHeaderFooterClicked = function (grid, index) { showLog("onRowGroupHeaderFooterClicked : " + "(" + index + ")"); }; gridView.onRowGroupBarClicked = function (grid, index) { showLog("onRowGroupBarClicked : " + "(" + index + ")"); }; gridView.onCheckBarFootDblClicked = function (grid) { showLog("onCheckBarFootDblClicked"); }; gridView.onIndicatorCellDblClicked = function (grid, index) { showLog("onIndicatorCellDblClicked : " + "(" + index + ")"); }; gridView.onStateBarCellDblClicked = function (grid, index) { showLog("onStateBarCellDblClicked : " + "(" + index + ")"); }; gridView.onRowGroupHeadFootDblClicked = function (grid, index) { showLog("onRowGroupHeadFootDblClicked : " + "(" + index + ")"); }; gridView.onRowGroupHeaderFooterDblClicked = function (grid, index) { showLog("onRowGroupHeaderFooterDblClicked : " + "(" + index + ")"); }; gridView.onRowGroupBarDblClicked = function (grid, index) { showLog("onRowGroupBarDblClicked : " + "(" + index + ")"); }; gridView.onPanelClicked = function (grid, index) { showLog("onPanelClicked : " + "(" + index + ")"); }; gridView.onPanelDblClicked = function (grid, index) { showLog("onPanelDblClicked : " + "(" + index + ")"); }; gridView.onRowGroupPanelClicked = function (grid, column) { showLog("onRowGroupPanelClicked : " + "(" + column.name + ")"); }; gridView.onRowGroupPanelDblClicked = function (grid, column) { showLog("onRowGroupPanelDblClicked : " + "(" + column.name + ")"); }; }); </script>
HTML
1. 그리드의 영역을 클릭 또는 더블클릭 하여 발생하는 이벤트를 확인하세요. <div id="realgrid" style="width: 100%; height: 300px;"></div>
관련 데모 페이지
API 참조