Электронная таблица не отображает данные - PullRequest
0 голосов
/ 20 апреля 2020

Я использую виджет электронных таблиц kendo-ui для загрузки данных, доступных только для чтения, на лету. Поскольку, насколько мне известно, нет способа импортировать литерал CSV, я конвертирую свои данные CSV в соответствующий формат, используя библиотеку jquery -csv вместе с функцией $ .map.

Это то, что я делаю:

var rows = $.csv.toArrays(viewModel.Csv);

$("#spreadsheet-preview").data("kendoSpreadsheet").activeSheet().rows = $.map(rows, function(row) {
    return {
        "cells": $.map(row, function(cell) {
            return {
                "background": "#ffffff",
                "color": "#343a40",
                "enable": false,
                "value": cell
            }
        })
    };
});
$("#spreadsheet-preview").data("kendoSpreadsheet").refresh();

Всякий раз, когда я проверяю результат $("#spreadsheet-preview").data("kendoSpreadsheet").activeSheet().rows в консоли моего браузера, возвращаемое значение:

[
  {
    "cells": [
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "John"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "Smith"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "5555551234"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "user@email.com"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "123 Main St"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "Anytown"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "LA"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "12345"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "4/19/2020"
      }
    ]
  }
]

Что это такое? Я ожидаю, что это произойдет, однако виджет никогда не обновляется, чтобы отражать новые данные, независимо от refresh(), вызываемого после того, как я установил свойство rows.

Это ошибка или я просто что-то упустил?

1 Ответ

1 голос
/ 20 апреля 2020

Итак, я знаю, что я задавал этот вопрос 15 минут go, но мне удалось решить эту проблему.

Установив rows на activeSheet, я создавал ранее неопределенное свойство возвращаемого объекта. Вместо этого мне пришлось вызвать метод из JSON и передать методу объект со свойством rows с моим отображением.

Вот решение:

$("#spreadsheet-preview").data("kendoSpreadsheet").activeSheet().fromJSON({
    "rows": $.map(rows, function(row) {
        return {
            "cells": $.map(row, function(cell) {
                return {
                    "background": "#ffffff",
                    "color": "#343a40",
                    "enable": false,
                    "value": cell
                }
            })
        };
    })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...