【问题标题】:Return MVC Json in Handsontable compatible format以 Handsontable 兼容格式返回 MVC Json
【发布时间】:2016-06-25 05:36:24
【问题描述】:

我正在使用 MVC 和 Handsontable 创建类似 excel 的显示,但我无法让控制器以 Handsontable 可以使用的格式返回 json。

MVC 控制器返回一个JsonResult

return Json(results, JsonRequestBehavior.AllowGet);

这是返回数据的js函数:

function GetCategoryAttributeList() {
    var categoryattributelist = "";
    $.ajax({
         async: true,
         type: "POST",
         url: "[myurl]/PopulateHOT",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         success: function (msg) {
             categoryattributelist = msg;
         }
        return categoryattributelist;
    });

在 Firebug 中,我可以看到返回的数据:

[{ StockCatalogueItemId=235031,  SKU="03121017593518"}, { StockCatalogueItemId=235032,  SKU="03121018032318"} ...etc

我调用函数并将结果分配给一个变量:

var categoryattributelist = GetCategoryAttributeList();

然后在初始化代码中使用结果:

var hotElement = document.getElementById('#example');
    var hot = new Handsontable(hotElement, {
        data: categoryattributelist
    });

此时,数据看起来略有不同(请注意,在每个元素之前添加了“对象”):

[Object { StockCatalogueItemId=235031,  SKU="03121017593518"}, Object { StockCatalogueItemId=235032,  SKU="03121018032318"} ...etc

所以目前的游戏状态是一个控制台错误,我似乎无法超越这个:

TypeError: rootElement is null

有什么想法吗?

【问题讨论】:

  • 预期的数据格式是什么?查看this tutorial,它似乎是一个或多个数组(当您返回一个对象数组时)
  • 硬编码var categoryattributelist = [["StockCatalogueItemId", "SKU"], [235031, 235032], ["03121017593518", "03121018032318"]]; 对你有用吗?
  • 根据this可以处理各种数据源(包括对象数据源)。
  • 嗯,不-我得到相同的rootElement is null错误...
  • 啊-因为hotElementnull(未定义)-getElementById('example');-没有#-(或使用hotElement = $('#example');?)

标签: json ajax asp.net-mvc handsontable


【解决方案1】:

尝试在 ajax 回调中使用初始化代码,看看是否可行

function GetCategoryAttributeList() {
    $.ajax({
         async: true,
         type: "POST",
         url: "[myurl]/PopulateHOT",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         success: function (data) {
             //handle returned data from service
             var hotElement = $('#example');
             if(hotElement){
                 var hot = new Handsontable(hotElement, { data: data });
             }
         }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 2014-04-29
    • 2016-09-20
    • 1970-01-01
    • 2011-06-11
    • 2013-08-06
    • 2011-01-08
    相关资源
    最近更新 更多