javascript - 如何使用 Handsontable 根据另一个自动完成单元格更新单元格

标签 javascript jquery ajax handsontable

我已经有了完整的代码来返回自动完成数据并根据此自动完成填充另一个单元格 但我想让它从ajax请求到数据库查询都是动态的。 如何做到这一点?

http://jsfiddle.net/wvXvJ/15/

$(document).ready(function() {

        var $container  = $("#mytables");
        var comsources  = ["Chrysler", "Nissan", "Suzuki", "Toyota"];

        var ac = [
            {"name":"Chrysler","label":"Pepsi Cola Hat","price":"24","abbrev":"CRY"},
            {"name":"Nissan","label":"Candle Lights Dinner","price":"780","abbrev":"NSS"},
            {"name":"Suzuki","label":"Pork Meat Ball","price":"178","abbrev":"SZK"},
            {"name":"Toyota","label":"Granny Health Supplement","price":"24","abbrev":"TYT"}
        ];

        var ht = $container.handsontable({
            startRows: 1,
            startCols: 5,
            rowHeaders: true,
            colHeaders: ['Item Name', 'Price', 'Code'],
            minSpareRows: 1,
            contextMenu: true,
            columns: [
                {
                    data: "name",
                    type: 'autocomplete',
                    source: comsources,
                    strict: false
                },
                {
                    data: "price"
                },
                { 
                    data: "code"
                }
            ],
            afterChange : function(arr, op) {
                if(op=="edit"&&arr.length==1) {
                    var value = arr[0][3];
                    for(var i=0;i<ac.length;i++) {
                        if(ac[i].name == value) {
                            $container.handsontable("setDataAtCell", arr[0][0], 1, ac[i].price);
                            $container.handsontable("setDataAtCell", arr[0][0], 2, ac[i].abbrev);
                            return false;
                        }
                    }
                }
            }
        });
    });

最佳答案

他们在 documentation 中准确定义了如何做到这一点:

$("#example3").handsontable({
  data: getCarData(),
  startRows: 7,
  startCols: 4,
  colHeaders: ["Car", "Year", "Chassis color", "Bumper color"],
  columns: [
    {
      type: 'autocomplete',
      source: function (query, process) {
        $.ajax({
          //url: 'php/cars.php', //commented out because our website is hosted on static GitHub Pages
          url: 'json/autocomplete.json',
          dataType: 'json',
          data: {
            query: query
          },
          success: function (response) {
              console.log("response", response);
              //process(JSON.parse(response.data)); //JSON.parse takes string as a argument
              process(response.data);

          }
        });
      },
      strict: true
    },
    {} /*Year is a default text column*/,
    {} /*Chassis color is a default text column*/,
    {} /*Bumper color is a default text column*/
  ]
});

关于javascript - 如何使用 Handsontable 根据另一个自动完成单元格更新单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25977052/

相关文章:

javascript - if ($(window).scrollTop() == $(document).height() - $(window).height() - 300) 为什么这不起作用?

javascript - jquery 在两个 ul 之间交换 ul 子级

javascript - 带有给出 "[object Object] does not fit the Control specification"错误的表格的 Google 图表

javascript - 使用 ASP.Net ajax 库进行跨浏览器 Xml 操作

javascript - Plupload:在开始上传之前执行自定义检查

javascript - 精细 uploader : Track Scaled Images ClientSide

javascript - 正则表达式替换在 Node 中的工作方式与在控制台中的工作方式不同

javascript - 涉及表单和警报的简单 JavaScript 问题

javascript - 通过ajax成功函数设置为模态设置的值时不显示

javascript - 从 UpdatePanel 异步回发后,嵌入式 javascript 不起作用