2

Я создал панель управления Google для визуализации с помощью службы Google HTML. Базовый datatable (jjdt) объединяется из нескольких таблиц данных, таких как jadt2, fa.Как обновить базовый Google Datatable панели управления визуализацией Google и обновить представление панели мониторинга?

jjdt = google.visualization.data.join(jadt2,fa,'left',[[0,0]],[1,2,3,4,5,6,7,8,9,10,11],[2,3]); 

И затем я создал оболочку диаграммы (finalTable), чтобы отобразить таблицу на панели управления.

finalTable = new google.visualization.ChartWrapper({ 
    'chartType': 'Table', 
    'containerId': 'table-div', 
    'options': { 
     'showRowNumber': false, 
     'width': '100%', 
     'height': '100%', 
     'allowHtml': true, 
     'pageSize': 20 
    } 
    }); 

dashboard.bind(wwPicker, [finalTable]); 
dashboard.draw(jjdt); 

Этот код работал нормально.

Теперь то, что я хочу сделать, - это позволить щелчку кнопки установить определенные ячейки в базовой таблице (jjdt) на новые значения и отобразить их на панели инструментов. Но это не так просто, как я думал.

Я попробовал 2 вещи:

1) Использование JavaScript для обновления таблицы jjdt для соответствующей соты (х, у) и вызвать finalTable.draw();

jjdt.setCell(x,y,'New Value'); 
    finalTable.draw(); 

Но это не имеет значения и не содержит сообщений об ошибках.

2) Я думаю, может быть, обертка диаграммы создала копию datatable. Поэтому я стараюсь, чтобы получить эту DataTable спину:

var mydt = finalTable.getDataTable(); 
mydt.setCell(x,y,'New Value'); 
finalTable.draw(); 

Я думал, что это правильный способ описан в документации https://developers.google.com/chart/interactive/docs/reference#methods_4

documentation

Однако, я получил сообщение об ошибке, говорящее setCell не является функцией mydt, хотя я могу вызвать mydt.getValue(). Кажется, что мой datatable «как-то» доступен только для чтения? Но это DataTable, а не DataView. Почему?

enter image description here

ответ

0

Я попробовал предложение PaulH, но он все еще не работает.

Но после некоторого дальнейшего углубления я наконец нашел решение. Проблема в том, что способ, которым я называл SetCell, не обновляет «форматированное значение» ячейки. Вот почему даже подумал, что я обновил значение ячейки таблицы, его формат остается таким же, как и раньше.

правильный способ сделать это:

jjdt.setCell(x,y,'New Value','New Display Value'); 

И этот путь только «New Display Value» будет отображаться в таблице диаграммы. Но график будет сортироваться на основе «Новой ценности».

Кроме того, чтобы обновить представление, кажется, либо позвонив

dashboard.draw(jjdt) 

или

finalTable.draw() 

будет иметь тот же эффект. Поэтому я просто обновил таблицу с помощью finalTable.draw().

Надеюсь, это поможет другим.

0

Приборная панель должна знать о модифицированном DataTable, поэтому я добавил одну строку в растворе 1)

jjdt.setCell(x,y,'New Value'); 
dashboard.draw(jjdt); // added line 
finalTable.draw(); 

Решение 2) не работает, потому что getDataTable() является метод ChartWrapper класс, это не метод класса Dashboard, поэтому ваш «не является функцией» сообщение об ошибке.