首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用SpreadJS自动完成

用SpreadJS自动完成
EN

Stack Overflow用户
提问于 2014-10-17 08:30:18
回答 2查看 1.1K关注 0票数 1

我试图将自动完成功能添加到SpreadJS中的一个列中,这样,当用户在单元格中键入时,将出现一个下拉列表,并从服务器检索到匹配的项。SpreadJS文档声明:

SpreadJS支持组合框、复选框、按钮、文本、超链接、Wijmo编辑单元格(AutoCompleteTextBox)和自定义单元格类型。

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

AutoCompleteTextBox听起来可能会起作用;但是,我找不到任何文档或示例来演示如何实现这一点。我可以创建一个自定义的单元格类型,但是如果我能够利用已经存在的功能,它会更好!

有人知道我如何实现这一点吗?

谢谢你,斯科蒂

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-22 23:24:07

我也有同样的问题,但是我调整了TextCellType以使用jQueryUI自动完成。

代码语言:javascript
复制
  <div>
    <input type='hidden' id="dropDownCellInfo" />
    <div id="ss" style="height:500px;border:solid gray 1px;"/>
  </div>

您可以参考jQuery UI文档来了解有关使用自动完成小部件的更多信息。下面的代码创建一个TextCellType并重写它的CREATE编辑器方法来创建一个文本元素,并使用jQuery自动完成对其进行初始化。

我必须使用一个隐藏的文本元素来捕获行和列,在其中我必须在从列表中选择一个选项之后更新该值。也许有更好的方法,但这起作用了。

代码语言:javascript
复制
  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);
票数 1
EN

Stack Overflow用户

发布于 2014-10-22 15:29:05

我联系了Wijmo:这是文档中的一个错误。但是,它们确实提供了一个使用自定义单元格类型来实现类似功能的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26420967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档