! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

[Wijmo 시작하기] FlexGrid 사용법 - 기본 기능편 > 온라인 스터디

본문 바로가기

기초튜토리얼 [Wijmo 시작하기] FlexGrid 사용법 - 기본 기능편

페이지 정보

작성자 GCK루시 작성일 2022-12-07 14:08 조회 536회 댓글 0건

본문

Wijmo (위즈모)는 비즈니스 애플리케이션의 다양한 요구 조건을 충족할 수 있는 UI 자바스크립트 라이브러리 제품으로, 그리드(Grid), 차트(Chart), OLAP 피벗, Input (텍스트박스, 콤보박스, 달력 등..) 과 같이 데이터를 시각화 하고 관리할 수 있는 다양한 UI 컨트롤을 제공하고 있습니다.


이번 포스팅에서는 그중 가장 인기 있는 컨트롤이자 빠르고 유연한 특징을 가진 FlexGrid의 기본 기능에 대해 소개하도록 하겠습니다.


 목차 

  1. 개발 환경
  2. FlexGrid에 데이터 보여주기
    - Wijmo 참조
    - FlexGrid 정의
    - 초기화 과정과 데이터 표시
  3. FlexGrid의 유용한 기본 기능
    - 항목 서식 변경
    - 행/열 고정
    - 편집 모드 전환
  4. 마치며





 개발 환경 


이번 포스팅에서는 아래 개발 환경을 사용하였습니다.


 FlexGrid의 데이터 보여주기 

FlexGrid와 함께 개발을 시작하기 위해서 복잡한 설정은 요구되지 않습니다. 이번 시간에는 아래 2가지 파일을 준비하여 FlexGrid에 데이터를 표시해보도록 하겠습니다.

 index.html

  페이지 메인. 페이지 요소에 FlexGrid를 배치합니다. 

 app.js

  FlexGrid의 데이터 표시 등 다양한 기능을 구현하기 위한 코드를 입력합니다.



FlexGrid 시작하기

 1. Wijmo 참조 

먼저 FlexGrid를 사용하는 데 필요한 라이브러리 레퍼런스 설정을 HTML 파일에 추가합니다. Wijmo의 모듈 외에, FlexGrid의 다양한 기능 처리를 담당하는 "app.js" 참조도 추가합니다.
<!-- index.html -->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>FlexGrid 시작하기</title>

    <!-- Wijmo 스타일(필수) -->
    <link href="css/wijmo.min.css" rel="stylesheet" />

    <!-- Wijmo코어 모듈(필수) -->
    <script src="scripts/wijmo.min.js"></script>
    <!-- Wijmo 컨트롤(옵션。필요한 컨트롤만 추가) -->
    <script src="scripts/wijmo.grid.min.js"></script>
    <!-- Wijmo custom culture(옵션, 원하는 문화권을 추가) -->
    <script src="scripts/wijmo.culture.ko.min.js"></script>
    <script src="scripts/app.js"></script>
  </head>
  <body></body>
</html>

 

위와 같이 직접 프로젝트에 모듈을 배치하는 방법 이외에 CDN에서 참조하거나 NPM 패키지를 사용할 수도 있습니다.


 2. FlexGrid 정의 

그런 다음 FlexGrid를 표시할 영역을 <div> 태그로 정의합니다. 이번에는 ID 속성에 "theGrid"를 설정했습니다.
<!-- index.html -->
<body>
  <div id="theGrid" style="height: 600px;"></div>
</body>



 3. 초기화 처리 및 데이터 표시 

다음에 "app.js"에 FlexGrid의 초기화 처리 및 샘플 데이터를 입력합니다. FlexGrid에 데이터를 표시하기 위해 itemsSource 속성에 배열과 같은 데이터 집합(데이터 소스)을 설정합니다. 

샘플에서는 getData 메소드를 호출하여 더미 데이터를 사용하고 있습니다. 다만 실제 개발 과정에서는 Web API 등에서 데이터를 가져온 뒤 처리하는 과정을 구현하시면 됩니다.
// app.js

document.addEventListener("DOMContentLoaded", function () {
  let flexGrid = new wijmo.grid.FlexGrid("#theGrid", {
    itemsSource: getData(),
  });
});

function getData() {
  var datasource = [
    {
      열1: "가나다라마",
      열2: "ABCDEFG",
      열3: "그레이프시티",
      열4: true,
      열5: 12345,
    },
    {
      열1: "안녕하세요.",
      열2: "sales-kor@grapecity.com",
      열3: "서울특별시",
      열4: false,
      열5: 67890,
    },
  ];
  return datasource;
}

이상으로 FlexGrid에 데이터 표시에 대한 준비가 완료되었습니다. 



 4. 실행하기 


Visual Studio Code에서 "index.html"을 마우스 오른쪽 단추로 클릭한 뒤 Open with Live Server를 실행합니다.


a9acd87c51950d929edb34bcc2113093_1670397354_503.png


실행 후 아래 화면과 같이 브라우저에 FlexGrid가 브라우저 화면에 표시됩니다.


a9acd87c51950d929edb34bcc2113093_1670397379_098.png

이제 FlexGrid에서 데이터 표시의 기본 단계를 마무리합니다.

다음 단계인 FlexGrid의 다양한 기능 사용법을 소개하기 전에 화면에 표시된 더미 데이터의 항목과 건수를 늘리기 위해, 아래와 같이 "app.js" 를 재작성해 지정한 count만큼 더미 데이터가 나타날 수 있도록 합니다.

// app.js

document.addEventListener("DOMContentLoaded", function () {
  let flexGrid = new wijmo.grid.FlexGrid("#theGrid", {
    itemsSource: getData(20),
  });
});

function getData(count) {
  var datasource = [
    {
      열1: "가나다라마",
      열2: "ABCDEFG",
      열3: "그레이프시티",
      열4: true,
      열5: 12345,
    },
    {
      열1: "안녕하세요.",
      열2: "sales-kor@grapecity.com",
      열3: "서울특별시",
      열4: false,
      열5: 67890,
    },
  ];

  if (count > 0) {
    var customers =
      "놀이공원,테마파크,동물원,슈퍼마켓,대형마트,백화점,유원지,선술집,레스토랑".split(
        ","
      );
    var reps = "박용남, 추민용, 하재윤, 류정화, 신선빈, 표수정".split(",");
    var products =
      "아메리카노,포도주스,오렌지주스,카페라떼,캐모마일,사과주스,에스프레소,마끼야또,청포도스무디".split(
        ","
      );
    var rnddata = [];
    for (var i = 0; i < count; i++) {
      var rnddate = new Date();
      rnddate.setDate(rnddate.getDate() - Math.floor(Math.random() * 365));

      rnddata.push({
        고객: customers[Math.floor(Math.random() * customers.length)],
        담당자: reps[Math.floor(Math.random() * reps.length)],
        주문일자: rnddate,
        제품명: products[Math.floor(Math.random() * products.length)],
        금액: Math.floor(Math.random() * 5000),
        수량: Math.floor(Math.random() * 2000),
        플래그: Math.floor(Math.random() * 30) % 3 == 0,
      });
    }
    return rnddata;
  } else {
    return datasource;
  }
}


실행하면 아래와 같이 20개의 랜덤 데이터가 그리드에 표시됩니다.


a9acd87c51950d929edb34bcc2113093_1670397433_9079.png

FlexGrid의 유용한 기본 기능


FlexGrid는 비즈니스 애플리케이션에서 사용할 수 있는 편리한 기능을 풍부하게 갖추고 있습니다.

그중 몇 가지 기본적인 사용법을 소개하겠습니다.


 항목의 서식 변경 


이전 단계까지, 수치형 자료를 표시하고 있는 「금액」과 「수량」의 열이 구별하기 어렵기 때문에 「금액」의 열을 통화 서식으로 표시 처리합니다. 


이를 위해 초기화 처리 중 「format」속성에 통화 표시(currency)를 지정하는 「c」를 할당하여「대한민국 원(₩)」마크가 나타나도록 구현합니다.


//app.js

//열의 서식 설정
flexGrid.columns[4].format = "c";

a9acd87c51950d929edb34bcc2113093_1670397506_0532.png

통화 기호표시는 애플리케이션이 적용된 문화권에 따라 다르게 나타납니다. 

샘플에서는 "index.html"에서 한국어 문화권 script를 설정했으므로 "₩"가 표시됩니다.

<!-- index.html -->

<!-- Wijmo custom culture (옵션, 원하는 문화권을 추가) -->
<script src="scripts/wijmo.culture.ko.min.js"></script>



 행 및 열 고정 


고정 처리하고 싶은 행이나 열을 지정하여 Excel과 같은 고정 행·열 표시를 구현할 수 있습니다. 

아래 코드와 같이 설정하면 첫 번째 열인 '분류' 열과 위에서 두 번째 행까지 고정됩니다.

// 열 고정
flexGrid.frozenColumns = 1;
// 행 고정
flexGrid.frozenRows = 2;


a9acd87c51950d929edb34bcc2113093_1670397785_5982.gif



 편집 모드 전환 


FlexGrid는 데이터를 표시하는 목적 이외에도, 표시한 데이터를 편집하는 유저 인터페이스로 이용할 수 있습니다.

일반적으로 Excel처럼 셀을 더블 클릭하거나 F2 키를 눌러 셀 데이터를 편집하는 모드를 지원합니다.


a9acd87c51950d929edb34bcc2113093_1670397817_9045.gif

이대로도 충분하지만, 데이터 편집 사용을 전제하여 셀에 포커스가 되었을 때 바로 편집 모드로 변경 처리된다면 유저에게 보다 나은 편리성을 제공할 수 있습니다.


해당 액션은 FlexGrid에서는 그리드가 포커스를 받았을 때(gotFocus 이벤트)와 선택한 셀이 변경되었을 때(selectionChanged 이벤트) 발생하는 각각의 이벤트로 제어할 수 있으며, 해당 이벤트를 사용하여 FlexGrid의 상태를 모니터링하고 사용자 작업에 맞게 편집 모드를 전환할 수 있습니다.

//app.js

// 상시 편집 모드
// 그리드가 포커스를 받았을 때 편집 모드 시작
flexGrid.gotFocus.addHandler((s, e) => {
  s.startEditing(false);
});
// 선택할 셀이 바뀌었을 때 편집 모드 시작
flexGrid.selectionChanged.addHandler((s, e) => {
  setTimeout(() => {
    s.startEditing(false);
  });
});


a9acd87c51950d929edb34bcc2113093_1670397866_6865.gif


이번에 소개한 각종 설정은 아래 샘플에서도 확인할 수 있습니다.

 



마치며


Wijmo의 주요 컨트롤 중 하나인 FlexGrid의 기본 기능에 대해 소개했습니다. 비즈니스 애플리케이션에 요구되는 세세한 요건을 구현하는 기능을 풍부하게 갖추고 있으므로 데이터 그리드가 필요하실 때 Wijmo를 이용하여 개발해보시기 바랍니다.


다음 포스팅에서는 FlexGrid 외관을 커스터마이징하는 방법에 대해 소개하도록 하겠습니다.

다음 시리즈 글도 기대해주세요!






지금 바로 Wijmo를 다운로드하여 직접 테스트해보세요!


a9acd87c51950d929edb34bcc2113093_1670398795_6711.png 

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.