0

谷歌可視化我試圖在asp.net AJAX工具包選項卡控件中使用谷歌可視化,列圖,但我有小(字面上)的問題。谷歌可視化內部AJAX控制工具包選項卡控制

如果我添加可視化到默認顯示的頁面加載時,條形圖顯示正確,但是,如果我將相同的控件添加到另一個選項卡並重新加載頁面,當我點擊其他選項卡,該控件顯示,但其微小且不可用

下面是一個Test.aspx的網頁一些代碼,說明了這個問題:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="TestProject._Default" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title></title> 

    <script type="text/javascript" src="http://www.google.com/jsapi"></script> 

    <script type="text/javascript"> 
     google.load('visualization', '1', { packages: ['columnchart'] }); 
    </script> 

    <script type="text/javascript"> 
     function drawVisualization() { 
      // Create and populate the data table. 
      var data = new google.visualization.DataTable(); 
      data.addColumn('string', 'Name'); 
      data.addColumn('number', 'Height'); 
      data.addRows(3); 
      data.setCell(0, 0, 'Tong Ning mu'); 
      data.setCell(1, 0, 'Huang Ang fa'); 
      data.setCell(2, 0, 'Teng nu'); 
      data.setCell(0, 1, 174); 
      data.setCell(1, 1, 523); 
      data.setCell(2, 1, 86); 

      // Create and draw the visualizations. 
      new google.visualization.ColumnChart(document.getElementById('visualization1')). 
      draw(data, null); 
      new google.visualization.ColumnChart(document.getElementById('visualization2')). 
      draw(data, null); 
     } 
     google.setOnLoadCallback(drawVisualization); 
    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 
    <div> 
     <cc1:TabContainer ID="TabContainer1" runat="server"> 
      <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> 
    </div> 
    </form> 
</body> 
</html> 

回答

0

好吧,我沒有得到這個職位所以這裏一個反應是我如何工作解決該問題,希望它幫助某人。

我從來沒有真正得到這個問題的根源,但我發現如果我延遲加載的Visualisations,直到包含它的選項卡被點擊,然後問題消失。

在的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函數在頁面加載時執行,如果當前活動選項卡是一個包含可視化文件的選項卡,那麼我加載它。

相關問題