2017-04-21 103 views
1

我有以下擴展功能,當數據出現在函數本身內時,它可以很好地工作。但是,每當我嘗試使用循環從Qlikview獲取數據時,它都會給我一個空白輸出。任何人都可以幫助我嗎?在下面的代碼中,我已經註釋了在函數本身中給出數據的部分。請幫忙。如何在使用擴展時從Qlikview獲取數據?

Qva.LoadScript("http://www.google.com/jsapi?callback=loadGoogleCoreChart", function() { 
}); 

function loadGoogleCoreChart() { 
google.load('visualization', '1', { 
    packages: ['corechart'], 
    callback: googleCoreChartLoaded 
}); 
} 

function googleCoreChartLoaded() { 

Qva.AddExtension('QlikView/Examples/GooglePieChart', function() { 

    //Declaring a two dimensional array (an array of arrays) 
    var row = new Array(this.Data.Rows.length + 1); 
    for (var i = 0; i <= this.Data.Rows.length; i++) { 
     row[i] = new Array(2); 
    } 
    //Getting the data from QlikView-- this part is not working! 
    for (var j = 1; j <= this.Data.Rows.length; j++) { 
     row[j][0] = this.Data.Rows[j - 1][0].text; 

     var temp = this.Data.Rows[j - 1][1].text; 
     row[j][1] = Number(temp); 
    } 

    var data = google.visualization.arrayToDataTable(row); 
    alert("hello"); 
    /* 
    var data = google.visualization.arrayToDataTable([ 
     ['Task', 'Hours per Day'], 
     ['Work',  11], 
     ['Eat',  2], 
     ['Commute', 2], 
     ['Watch TV', 2], 
     ['Sleep', 7] 
    ]); 
    */ 

    new google.visualization.PieChart(this.Element).draw(data, { chartArea: { left: 20, top: 20, width: "100%", height: "100%"} }); 
}); 
} 

回答

1
在JavaScript構建陣列時

,填充值

也之前
它是沒有必要定義/創建所有的數組元素,以這種方式使用一for環時,作爲第二個參數,
需要使用小於(<
不小於或等於(<=

否則,環路將失敗在最後一個元素上,如果它們是基於零的數字,則它們的索引將爲零並且一個
例如,如果您有一個包含2個元素的數組,它們的索引將爲零。 - arr[0] - arr[1]

所以當i等於length 2 - arr[2]將不存在

嘗試像下面的代碼片段...

Qva.AddExtension('QlikView/Examples/GooglePieChart', function() { 
    var row = []; 
    for (var i = 0; i < this.Data.Rows.length; i++) { 
     row.push([ 
     this.Data.Rows[i][0].text, 
     parseFloat(this.Data.Rows[i][1].text) 
     ]); 
    } 

    var data = google.visualization.arrayToDataTable(row, true); 
    new google.visualization.PieChart(this.Element).draw(data, { chartArea: { left: 20, top: 20, width: "100%", height: "100%"} }); 
}); 

注:如果你是數組沒有第一行的列標題,需要添加true作爲第二個參數 - >arrayToDataTable

+0

非常感謝。這絕對有助於:) –

相關問題