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

FlexGrid input 검색 기능 문의 > Q&A | 토론

본문 바로가기

Wijmo

Q&A | 토론

ReactJS FlexGrid input 검색 기능 문의

페이지 정보

작성자 아이지니 작성일 2023-01-16 17:14 조회 1,142회 댓글 0건
제품 버전 : 5.20211.781
컨트롤 이름 : FlexGrid

본문

안녕하세요.

FlexGrid에 input으로 검색이 되도록 작업을 하고싶은데 잘안돼서 문의드립니다.

아래 그림처럼 +버튼을 클릭하면 아래 그리드를 하나 추가를 하고

이름 input에 단어를 작성하면 api를 통해서 값을 가져와 input 밑으로 리스트를 보여준후 선택하게끔 하고싶습니다.

그리고 B번처럼 input 리스트를 선택하면 팀명쪽으로 원하는 데이터를 집어넣고싶습니다.

확인부탁드립니다.


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

댓글목록

등록된 댓글이 없습니다.

4 답변

ReactJS Re: FlexGrid input 검색 기능 문의

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

페이지 정보

작성자 GCK루시 작성일 2023-01-17 14:32 댓글 1건

본문

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


문의하신 내용에 대해 답변드립니다.


해당 기능을 구현하기 위해서는 ComboBox보다는 AutoComplete의  textChanged 이벤트 및  ListBox 클릭 이벤트 핸들러를 추가하시면 됩니다.


먼저 AutoComplete 컨트롤을 생성한 뒤, text 속성이 변경될 때 발생하는 textChanged에서 API 요청 및 받은 값을 itemsSource에 할당해줍니다. 그 다음 ListBox에서 선택한 값을 특정 셀 값에 설정하기 위해서 ListBox에 클릭 이벤트 내에서 setCellData로 값을 추가해주시면 됩니다.


아래 간단한 코드를 확인하시기 바랍니다.

createList(cell, dataItem,s); // s = 그리드
  (....)
 
  function createList(cell, dataItem,grid) {
    let auto = new wjInput.AutoComplete(document.createElement("div"), {
      beginsWithSearch:true,// 지정된 검색어로 시작하는 항목을 검색 여부를 결정하는 값 가져오거나 설정
      itemsSource: [],
      minLength:1, // 자동완성 제안을 트리거할 최소 입력 길이 가져오거나 설정
      textChanged:(s,e) => {
        // 데이터 API 호출
    // 응답받은 데이터를 가공 후, s.itemsSource에 할당
      },
    });
 
auto.listBox.hostElement.addEventListener("click",function(e){
      var rowIdx = grid.selectedRows[0].index; // 현재 선택된 행의 인덱스 
      if(e.target){
        grid.setCellData(rowIdx,2,e.target.textContent); // 값 설정하기
      }
    })
   (...)
  }

API 문서를 공유 드리며, 다른 궁금한 점이 생기면, 문의 주시기 바랍니다.


beginsWithSearch

- minLength

- textChanged

- setCellData


감사합니다.

그레이프시티 드림

댓글목록

아이지니님의 댓글

아이지니 작성일

안녕하세요. 추가로 문의드리고 싶은게 있어서 문의드립니다. 
알려주신 방법으로 작업을 진행중에 ComboBox와 AutoComplete을 동시에 사용을 하려고 하면 ComboBox의 작동이 제대로 되지 않는것같습니다.
+버튼 클릭시 select행에는 ComboBox가 input행에는 AutoComplete를 적용하고싶습니다.
예전에 'FlexGrid select 박스 추가 문의'로 받은 소스에 'FlexGrid input 검색 기능 문의'로 답변받은 내용을 적용한 소스 URL 함께 전달드립니다.

소스수정 URL: https://codesandbox.io/s/wijmo-teugjeong-sele-kombobagseu-cuga-forked-wtc0fh
FlexGrid select 박스 추가 문의했던 내용 : https://dev.grapecity.co.kr/bbs/board.php?bo_table=wijmo_qna&wr_id=1618

ReactJS Re: FlexGrid input 검색 기능 문의

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

페이지 정보

작성자 GCK루시 작성일 2023-01-27 14:05 댓글 1건

본문

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


문의하신 이슈의 경우, AutoComplete 컨트롤을 생성하는 createList2 사용자정의 함수 내에서 ComboBox 컨트롤들을 저장하는 dataItem의 list 배열에 AutoComplete를 할당하여 발생된 것으로 보입니다. 

  function createList2(cell, dataItem) {
    let auto = new wjInput.AutoComplete(document.createElement("div"), {
(....)
  //이슈 원인 코드
    dataItem.list = [auto];
  }


따라서 아래 코드와 같이 별도로 AutoComplete에 컨트롤를 저장하는 key를 설정하여 해당 키에 값을 할당하거나 사용하지 않는 경우 주석 처리 해주시기 바랍니다.


dataItem.listTwo = [auto];


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


감사합니다.

그레이프시티 드림

댓글목록

아이지니님의 댓글

아이지니 작성일

안녕하세요.
알려주신 방법대로 수정을 진행하였는데 문의사항이 생겨서 재문의드립니다.
AutoComplete로 검색을 하면 자동으로 선택이 되어버리는 문제점이 있으며 이 문제로 자동으로 선택된 후 backspace를 누르면 삭제가 되지 않고 자동 선택이 계속 됩니다.
위 두가지 문제 확인부탁드립니다.
예시는 아래 소스수정 URL페이지에서 확인부탁드립니다. 감사합니다.

소스수정 URL: https://codesandbox.io/s/wijmo-teugjeong-sele-kombobagseu-cuga-forked-wtc0fh?file=/src/App.js

ReactJS Re: FlexGrid input 검색 기능 문의

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

페이지 정보

작성자 GCK루시 작성일 2023-02-01 14:52 댓글 2건

본문

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


먼저 자세한 설명 및 코드 공유 감사드리며 문의에 대한 안내 드립니다.


1. autocomplete 자동 선택 이슈

=> textChanged 이벤트 내에서 itemsSource에 데이터를 바인딩할 때, selectedIndex가 지정되어 해당 이슈가 발생된 것으로 확인됩니다. 따라서 데이터 바인딩 후, selectedIndex를 -1로 두어 초기 선택 항목을 없애고 input 창에 입력한 텍스트 유지를 위해 text 속성에 기존 입력한 텍스트를 재할당하여 주시기 바랍니다.


2. text 삭제 시에도 자동 선택 반복 이슈

=> 해당 이슈의 경우, 텍스트를 삭제 시에도 textChanged가 호출 및 itemsSource가 재할당되면서 이슈가 발생된 것으로 확인됩니다. 따라서 해당 이슈를 해결하기 위해서는 AutoComplete의 itemsSource의 길이가 0일 때(즉 초기 호출일 때)만 데이터 바인딩 처리하도록 조건을 추가해주시길 바랍니다.


아래 간단한 코드를 참고하여 주시기 바랍니다.

function createList2(cell, dataItem) {
    var data = [];
    let auto = new wjInput.AutoComplete(document.createElement("div"), {
(....)
      textChanged: (s, e) => {
        if (s.itemsSource.length == 0){ // 데이터 유무 확인
         wjCore.httpRequest(
(....)
                  success: (xhr) => {
                    let response = JSON.parse(xhr.response);
                    var text = s.text //입력한 텍스트 저장
                    s.itemsSource = response.value; // 데이터 바인딩
                    s.selectedIndex = -1; 
                    s.text = text //입력한 텍스트 유지 위해 text 속성에 할당
                  }
(....)


- selectedIndex API 문서

- text API 문서


API 문서를 같이 전달 드리며 다른 궁금한 점이 생기면, 문의 주시기 바랍니다.


감사합니다.

그레이프시티 드림

댓글목록

아이지니님의 댓글

아이지니 작성일

안녕하세요. 매번 자세히 설명해주셔서 감사합니다.
알려주신 방법으로 수정을 하였는데 문제가 생겨서 재문의드립니다.
영어로 작업했을때는 문제가 없었는데 한글로 작업을 할때 무제한으로 textChanged가 돌아가 오류가 발생이 됩니다.
그리고 영문과 다르게 두글자부터 textChanged가 실행이 되던데 한글자 쓴 후에 바로 실행될수있는 방법이 있을까요?
확인부탁드립니다.

소스수정 URL: https://codesandbox.io/s/wijmo-teugjeong-sele-kombobagseu-cuga-forked-wtc0fh?file=/src/App.js

GCK루시님의 댓글의 댓글

GCK루시 작성일

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

해당 이슈 현재 확인 중에 있으며 업데이트 되는 대로 안내 드리도록 하겠습니다.

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

ReactJS Re: FlexGrid input 검색 기능 문의

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

페이지 정보

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

본문

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


1. 한글로 입력 시, textChanged 무제한 호출 이슈

=> 공유해주신 코드 상으로는 textChanged 내에 한글 입력 시, 반환되는 데이터가 빈 배열로 itemsSource에 재할당되고 있습니다. 더불어, 텍스트 유지를 위한 text 속성에 재설정으로 인한 textChanged 이벤트가 재호출되고 itemsSource의 길이가 0이므로 다시 기존 API가 호출되면서 해당 이슈가 발생되는 것으로 확인됩니다.


따라서 별도로 입력한 텍스트가 영문일 때만 해당 API를 호출되도록 하거나 데이터의 value가 []이면 itemsSource 및 text가 변동되지 않도록 조건을 설정해보시기 바랍니다.


2. 한글 minLength 설정 이슈

=> 해당 이슈의 경우, 한글이 입력되는 방식으로 인해 발생된 케이스입니다. 한글을 입력할 때 음절 블록을 완성하여 단일 단위로 입력하기 전까지 밑줄이 표시됩니다. 밑줄이 사라지기 전까지는 length 값이 인식되기 전이므로 문자를 입력하신 다음, Enter 키 또는 방향키 등을 이용하여 단일 문자로 등록하셔야 밑줄이 사라지면서 length 값 인식 및 드롭다운 리스트가 나타납니다.

 

이는 한글이 조합형 문자이기 때문에 발생하는 현상으로, AutoComplete 기능이 제한적으로 동작되는 점 양해 부탁드립니다. 

원하시는 도움을 드리지 못해 죄송합니다.


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


감사합니다.

그레이프시티입니다.

댓글목록

등록된 댓글이 없습니다.

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