2014-10-17 2 views
0

사용자가 셀에 입력 할 때 드롭 다운 목록이 서버에서 검색된 일치 항목과 함께 표시되도록 SpreadJS의 열에 자동 완성 기능을 추가하려고합니다. SpreadJS 문서 상태 :SpreadJS를 사용하여 자동 완성

SpreadJS 상자, 버튼, 텍스트, 하이퍼 링크, Wijmo 편집 세포 (AutoCompleteTextBox)을 확인, 콤보 상자를 지원하며, 사용자 정의 셀 유형. 이 트릭을 할 수처럼

http://helpcentral.componentone.com/NetHelp/SpreadHClientUG/celltypes.html

AutoCompleteTextBox 소리; 그러나, 나는 이것을 달성 할 수있는 방법을 보여주는 문서 나 샘플을 찾을 수 없습니다. 맞춤형 셀 유형을 만들 수 있지만 이미있는 기능을 활용할 수 있다면 훨씬 더 좋을 것입니다!

누구든지 이것을 구현할 수있는 방법을 알고 있습니까?

덕분에, 스코티

답변

1

같은 문제가 있었지만 jQueryUI 자동 완성을 사용하기 위해 TextCellType을 수정했습니다.

<div> 
    <input type='hidden' id="dropDownCellInfo" /> 
    <div id="ss" style="height:500px;border:solid gray 1px;"/> 
    </div> 

당신은 자동 완성 위젯을 사용하는 방법에 대한 자세한 내용을 알고하는 jQuery UI documentation를 참조 할 수 있습니다. 아래 코드는 TextCellType을 만들고 오버 라이더 create editor 메서드를 재정 의하여 텍스트 요소를 만들고 jQuery 자동 완성을 사용하여 초기화합니다.

목록에서 옵션을 선택한 후 값을 업데이트해야하는 행과 열을 캡처하기 위해 숨겨진 텍스트 요소를 사용해야했습니다. 더 나은 방법이있을 수도 있지만 이것이 효과가 있습니다.

var cellType = new $.wijmo.wijspread.TextCellType(); 
    cellType.createEditorElement = function(context) 
    { 
    var obj = jQuery('#dropDownCellInfo'); 
    obj.data('sheet' , context.sheet); 
    obj.data('row', context.row); 
    obj.data('col', context.col); 

    console.log(context); 
    var $textarea = $('<input type="text" id="txtSearch" style="visible:false" />'); 
    var editor = document.createElement("div"); 
    $(editor).append($textarea); 
    $textarea.autocomplete({ 
     minLength: 2, 
     autoFocus : true, 
     source: 'http://localhost/spreadjs/index.php', 
     focus: function(event, ui) { 
     $("#txtSearch").val(ui.item.inst_name); 
     return false; 
     }, 
     select: function(event, ui) { 
     $("#txtSearch").val(ui.item.inst_name);    
     var obj = jQuery('#dropDownCellInfo'); 
     var spd = jQuery("#ss").wijspread("spread").getActiveSheet().setActiveCell(obj.data('row'),obj.data('col')); 

     // We have to explicitly remove the list element from the DOM because some 
     // how the method creates a new list for each autocomplete request and does not deletes the list after onSelect event. 
     jQuery('ul.ui-autocomplete').remove(); 
     return false; 
     } 
    }) 
    .autocomplete("instance")._renderItem = function(ul, item) { 
     return $("<li>") 
     .append("<a>" + item.inst_name + "</a>") 
     .appendTo(ul); 
    }; 
    return editor 
    }; 
    sheet.getColumn(3).cellType(cellType);