Хорошо, я не получил ни одного ответа на этот пост, так что вот как я обошел проблему, надеюсь, она кому-нибудь поможет.
На самом деле я никогда не получал корень этой проблемы, но обнаружил, что если я отложил загрузку визуализаций до тех пор, пока не будет нажата вкладка, на которой она содержится, проблема исчезнет.
В TabControl я вызываю функцию JavaScript для загрузки визуализации вкладок при нажатии:
<cc1:TabContainer ID="TabContainer1" runat="server" OnClientActiveTabChanged="tabChanged">
<cc1:TabPanel runat="server" HeaderText="TabPanel1" ID="TabPanel1">
<ContentTemplate>
<div id="visualization1" style="width: 300px; height: 300px;"></div>
</ContentTemplate>
</cc1:TabPanel>
<cc1:TabPanel runat="server" HeaderText="TabPanel1" ID="TabPanel2">
<ContentTemplate>
<div id="visualization2" style="width: 300px; height: 300px;"></div>
</ContentTemplate>
</cc1:TabPanel>
</cc1:TabContainer>
Функция JavaScript
function tabChanged(sender, args) {
var ActiveTab = sender.get_activeTabIndex();
if (sender.get_activeTabIndex() == 0) {
if (tab0Loaded != true) {
//load the visualisation
new google.visualization.ColumnChart(document.getElementById('visualization2')).draw(data, null);
tab0Loaded = true
}
}
if (sender.get_activeTabIndex() == 1) {
if (tab1Loaded != true) {
//load the visualisation
new google.visualization.ColumnChart(document.getElementById('visualization2')).draw(data, null);
tab1Loaded = true
}
}
}
Во время обратной передачи активная вкладка может измениться, чтобы справиться с этим, у меня есть функция JavaScript, которая выполняется при загрузке страницы, если текущая активная вкладка содержит визуализацию, тогда я загружаю ее.