columnSummary не добавляется - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь добавить columnSummary к моей таблице, используя Handsontable.Но похоже, что функция не срабатывает.Значение stretchH устанавливается и устанавливается правильно.Но он не реагирует на опцию columnSummary:

this.$refs.hot.hotInstance.updateSettings({stretchH: 'all',columnSummary: [
        {
           destinationRow: 0,
           destinationColumn: 2,
           reversedRowCoords: true,
           type: 'custom',
           customFunction: function(endpoint) {
            console.log("TEST");
           }
       }]
 }, false);

Я также безуспешно пытался использовать type:'sum'.

Спасибо за помощь и советы!

Ответы [ 3 ]

2 голосов
/ 19 июня 2019

columnSummary нельзя изменить с помощью updateSettings: GH # 3597

Вы можете установить columnSummary настроек при инициализации Handsontable.

0 голосов
/ 21 июня 2019

Одним из обходных путей было бы как-то управлять собственной сводкой столбцов, поскольку Handsontable мог бы дать вам некоторую головную боль.Таким образом, вы можете попытаться добавить еще одну строку, чтобы вставить вашу арифметику , но она беспорядочная (требуется фиксированное число строк и не работает с операциями фильтрации и сортировки. Тем не менее, она может хорошо работать при некоторых обстоятельствах)..

Однако, по моему скромному мнению, столбец сводки должен быть полностью функциональным. Затем нам нужно вывести итоговую строку из данных таблицы. Что приходит на ум, это взять упомянутую выше дополнительную строку и взятьэто далеко от области данных таблицы, но это заставило бы нас сделать так, чтобы из строки таблицы всегда выглядело так, как будто оно все еще было в таблице.

Так что я подумал, что вместоимея новую строку, мы могли бы просто добавить нашу сводку столбца в заголовок столбца: enter image description here

Вот рабочий пример JSFiddle .

После рендеринга таблицы Handsontable нам нужно перебрать столбцы и настроить сводку столбцов прямо в HTML-содержимом ячейки таблицы:

for(var i=0;i<tableConfig.columns.length;i++) {
    var columnHeader = document.querySelectorAll('.ht_clone_top th')[i];
    if(columnHeader) { // Just to be sure column header exists
        var summaryColumnHeader = document.createElement('div');
        summaryColumnHeader.className = 'custom-column-summary';
        columnHeader.appendChild( summaryColumnHeader );
    }
}

Теперь, когда наше местодержатели установлены, мы должны обновить их с некоторыми арифметическими результатами:

var printedData = hotInstance.getData();
for(var i=0;i<tableConfig.columns.length;i++) {
    var summaryColumnHeader = document.querySelectorAll('.ht_clone_top th')[i].querySelector('.custom-column-summary'); // Get back our column summary for each column
    if(summaryColumnHeader) {
        var res = 0;
        printedData.forEach(function(row) { res += row[i] }); // Count all data that are stored under that column
        summaryColumnHeader.innerText = '= '+ res;
    }
}

Эта функция кода может вызываться в любое время, когда она должна быть:

var hotInstance = new Handsontable(/* ... */);
setMySummaryHeaderCalc(); // When Handsontable table is printed
Handsontable.hooks.add('afterFilter', function(conditionsStack) { // When Handsontable table is filtered
    setMySummaryHeaderCalc();
}, hotInstance);

Не стесняйтесь комментировать,Я мог бы улучшить свой ответ.

0 голосов
/ 19 июня 2019

Невозможно добавить columnSummary в Handsontable так, как вы этого хотите. Я долго пытался сделать то же самое, но не смог этого сделать.

Та же проблема, которую вы найдете здесь с некоторыми другими подробностями: https://github.com/handsontable/handsontable/issues/5794

Если у вас есть еще ошибки, просто зайдите на сайт GitHub и откройте выпуск. Это лучший способ решить это.

Вот JSFiddle, который использует columnSummary: http://jsfiddle.net/AMBudnik/g2f8h6dt/

Я надеюсь, что вы можете найти работу вокруг. Если у вас есть другие вопросы, просто дайте мне знать! :)

...