[javascript] SlickGrid의 행 단위 드래그 앤 드롭

SlickGrid은 JavaScript로 작성된 강력한 그리드 라이브러리입니다. 그것은 테이블 형태의 데이터를 보여주고 편집할 수 있는 기능을 제공합니다. 이 블로그 포스트에서는 SlickGrid에서 행 단위로 드래그 앤 드롭을 구현하는 방법을 알아보겠습니다.

드래그 앤 드롭 라이브러리 설치

먼저, SlickGrid에서 행 단위로 드래그 앤 드롭을 구현하기 위해서는 드래그 앤 드롭 라이브러리를 설치해야 합니다. 우리는 이 예시에서 jQuery UI Droppable을 사용하겠습니다. 아래의 명령어를 사용하여 필요한 파일을 다운로드하고 HTML 문서에 추가하세요.

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

행 단위 드래그 앤 드롭 구현

이제 SlickGrid에서 행 단위로 드래그 앤 드롭을 구현해보겠습니다. 먼저 데이터를 포함하는 그리드를 생성합니다.

// 데이터 배열 생성
var data = [
  { id: 1, name: 'John Doe', age: 25 },
  { id: 2, name: 'Jane Smith', age: 30 },
  { id: 3, name: 'Mike Johnson', age: 35 },
];

// 그리드 옵션 설정
var options = {
  data: data,
  enableCellNavigation: true,
  enableColumnReorder: false,
  ...
};

// 그리드 생성
var grid = new Slick.Grid("#grid", data, columns, options);

다음으로, 드래그 앤 드롭 이벤트를 처리할 함수를 작성합니다.

function handleDragStart(event, ui) {
  var row = $(this).data("row"); // 드래그 시작한 행을 가져옴
  ...
}

function handleDrop(event, ui) {
  var row = $(ui.draggable).data("row"); // 드랍한 행을 가져옴
  ...
}

마지막으로, 드래그 앤 드롭을 활성화하고 이벤트 핸들러를 등록합니다.

// 드래그 앤 드롭 활성화
grid.onDragInit.subscribe(function (e, dd) {
  return true;
});

// 드래그 가능한 행으로 설정
grid.onDragStart.subscribe(handleDragStart);

// 드래그한 행을 드롭 시킴
$("#grid").droppable({
  drop: handleDrop
});

추가로, 드래그 앤 드롭을 통해 데이터를 서버로 이동해야 한다면 Ajax 요청을 사용하여 데이터를 전송할 수 있습니다.

결론

이렇게하면 SlickGrid에서 행 단위로 드래그 앤 드롭을 구현할 수 있습니다. 드래그 앤 드롭 라이브러리를 사용하여 손쉽게 구현할 수 있으며, 서버 측으로 데이터를 이동시키려면 Ajax 요청을 사용할 수 있습니다. SlickGrid의 다른 기능과 함께 사용하면 더욱 강력한 웹 애플리케이션을 만들 수 있습니다.

참고 자료