# GeeGrid API Reference

언어 선택: [한국어](/GEEGRID_API_REFERENCE.ko.md) | [English](/GEEGRID_API_REFERENCE.en.md)

## 생성자

```js
var grid = new GeeGrid('userGrid');
var search = new GeeSearch('searchTool');
var object = new GeeObject('settingsForm');
```

## Grid 데이터 API

```js
grid.setObjectData([{ id: 1, name: '홍길동' }]);
grid.setArrayData(['id', 'name'], [[1, '홍길동']]);
grid.setJsonData([{ id: 1, name: '홍길동' }]);
var rows = grid.getData();
var value = grid.getValue(0, 'name');
grid.setValue(0, 'name', '김철수');
```

## 페이징·정렬

```js
var params = grid.makePageParams();
grid.setTotalCount(120);
grid.setCurrentPage(1);
grid.setViewLength(20);
grid.makePaging();
```

`makePageParams()`에서 확인된 항목은 `page`, `pageSize`, `startIDX`, `endIDX`, `orderColumn`, `orderMethod`입니다.

## 이벤트

```html
<geegrid id="userGrid" handler="load_users" sort_handler="sort_users">
  <column id="name" renderer="render_name" onclick="open_user">이름</column>
</geegrid>
```

```js
GeeGrid.on('load_users', function () {});
GeeGrid.on('sort_users', function () { GeeGrid.invoke('load_users', {}); });
GeeGrid.on('render_name', function (payload) {
  payload.cell.textContent = String(payload.value || '');
});
```

콜백 이름에는 함수 실행식이 아닌 등록 이름만 사용합니다.

## 권장 API 응답

```json
{
  "result": "success",
  "count": 120,
  "page": 1,
  "rows": 20,
  "records": []
}
```

## API 래퍼

API 호출은 화면에서 직접 구현하지 않고 프로젝트의 API 래퍼 규칙을 따릅니다. 실제 기준은 `codex_base/GEEGRID_API.md`를 참조합니다.
