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

행 끌기 예제 문의 > Q&A | 토론

본문 바로가기

Angular 행 끌기 예제 문의

페이지 정보

작성자 111234 작성일 2023-07-31 11:07 조회 292회 댓글 1건
제품 버전 : 5.20222.877
컨트롤 이름 : FlexGrid

본문

첨부파일

안녕하세요.

데모 페이지에 나와 있는 예제 관련하여 문의 드립니다.


https://demo.grapecity.co.kr/wijmo/learn-wijmo/Grid/Events/DragandDrop/angular


위 경로의 예제와 동일하게 소스를 작성하여 테스트를 진행하였는데

드래그 한 row의 데이터는 잘 가져오는 것을 확인하였으나

(drop이 되는 target은 textarea로 테스트 진행)

drag를 한 상태에서 target이 아닌 wj-combo-box나 wj-input-date 와 같은 곳에 마우스를 올리면 drop이 가능한것처럼 포인터가 변경되고 실제 target이 아닌곳에 drop을 하게될 경우에는

드래그한 그리드 데이터 row index 값이 입력 되는것으로 보입니다. (이미지 첨부)


<질문>

1. target이 아닌 곳에 마우스를 올렸을 때 drop이 가능한 상태로 보이는 것을 막는 방법

2. target이 아닌 곳에 drop했을 때 row index 값 입력을 막는 방법

3. textarea가 target일 때 커서 위치에 drag한 데이터를 삽입하는 방법

4. textarea에 값이 입력되어 있고 textarea에 dragover한 상태로 특정 위치(ex. 입력되어 있는 텍스트 사이 삽입을 원하는 위치)에 drop하였을 때 drop한 위치에 데이터를 삽입하는 방법


위 질문 내용을 구현한 샘플 요청 드립니다.

감사합니다.

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

댓글목록

GCK루시님의 댓글

GCK루시 작성일

안녕하세요 그레이프시티입니다.

문의하신 내용은 현재 확인 중에 있으면 업데이트 되는 대로 안내 드리도록 하겠습니다.

감사합니다.
그레이프시티 드림

1 답변

Angular Re: 행 끌기 예제 문의

추천0 이 글을 추천하셨습니다 비추천0 채택채택

페이지 정보

작성자 GCK루시 작성일 2023-08-03 16:33 댓글 0건

본문

안녕하세요 그레이프시티입니다.


문의하신 기능의 경우, Wijmo의 자체적인 기능보다는 HTML 이벤트와 관련된 내용이오니 업무에 참고 부탁드립니다. 문의에 대한 샘플 코드는 각 질문 답변 아래에서 확인할 수 있습니다.


1. target이 아닌 곳에 마우스를 올렸을 때 drop이 가능한 상태로 보이는 것을 막는 방법

=> 해당 dragover 이벤트에서 이벤트 설정을 아래와 같이 처리해보시기 바랍니다.

app.component.html 

<wj-combo-box id="notTheTarget"></wj-combo-box>

app.component.ts 

this._makeNotDropTarget(document.querySelector('#notTheTarget'));

 private _makeNotDropTarget(s: HTMLElement) {
        s.addEventListener('dragover', (e: DragEvent) => {
            e.preventDefault();
            e.dataTransfer.dropEffect  = 'none'
        });        
}


2. target이 아닌 곳에 drop했을 때 row index 값 입력을 막는 방법

=> target이 아닌 곳의 drop 이벤트에 대해서 preventDefault 메서드를 호출해보시기 바랍니다.

app.component.html 

<wj-combo-box id="notTheTarget"></wj-combo-box>

app.component.ts

this._makeNotDropTarget(document.querySelector('#notTheTarget'));

private _makeNotDropTarget(s: HTMLElement) {
   s.addEventListener('drop', (e: DragEvent) => {
       e.preventDefault();
   });     
}


3. textarea가 target일 때 커서 위치에 drag한 데이터를 삽입하는 방법

=> drop 이벤트 내에서 textarea의 value에 데이터를 설정해주시기 바랍니다.

app.component.html 

<textarea id="theTarget" cols="50" rows="10" value=""></textarea>


app.component.ts 

this._makeDropTarget(document.querySelector('#theTarget'));

private _makeDropTarget(s: HTMLInputElement) {

s.addEventListener('drop', (e: DragEvent) => {
  let dragRow = e.dataTransfer.getData('text');
  if (dragRow != null) {
   let item = this.flex.rows[parseInt(dragRow)].dataItem;
   s.value = JSON.stringify(item) 
   alert('thanks for dropping row ' + JSON.stringify(item) + ' here.');
   e.preventDefault();
   }
 });
}


4. textarea에 값이 입력되어 있고 textarea에 dragover한 상태로 특정 위치에 drop하였을 때 drop한 위치에 데이터를 삽입하는 방법

=> 해당 기능의 경우, textarea 요소에서 drop 이벤트를 처리하면 복잡한 작업이 되므로 FlexGrid의 'dragStart' 이벤트에서 전송할 데이터를 설정하고 textarea에서 드롭 작업을 자체적으로 처리할 수 있도록 하는 것을 추천드립니다.


app.component.html 

<textarea id="theTarget" cols="50" rows="10" value=""></textarea>


app.component.ts

this._makeDragSource(this.flex);
this._makeDropTarget(document.querySelector('#theTarget'));

private _makeDragSource(s: wjcGrid.FlexGrid) {
(...)
s.addEventListener(s.hostElement, 'dragstart', (e: DragEvent) => {
     let ht = s.hitTest(e);
     if (ht.cellType == wjcGrid.CellType.RowHeader) {
         s.select(new wjcGrid.CellRange(ht.row, 0, ht.row, s.columns.length - 1));
         e.dataTransfer.effectAllowed = 'copy';
         e.dataTransfer.setData('text', JSON.stringify(s.rows[ht.row].dataItem));
      };
     }, true);
}


private _makeDropTarget(s: HTMLInputElement) {
  s.addEventListener('drop', (e: DragEvent) => {
     let dragRowData = e.dataTransfer.getData('text');
     alert('thanks for dropping row ' + dragRowData + ' here.');
  });
}


​다른 궁금한 점이 생기면 문의주시기 바랍니다.


감사합니다.

그레이프시티 드림



댓글목록

등록된 댓글이 없습니다.

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