2014-09-26 45 views
0

我有一個UiApp,它有一個FlexTable,每一行代表一個位置。這些位置用複選框標記,用戶選擇它們,當它們執行保存功能時,我想更新表格以便只保留選定的行。UiApp,FlexTable.removeRow()

... 
var checkbox_sorszam = [] 
var rows_to_del = [] 

    for(var i = 0; i < locations_data.length; i++) 
    { 
    if(e.parameter['checkboxischecked'+i] == 'true') 
    { 
     location_list.push(e.parameter['checkbox_value_'+i]); 
     checkbox_sorszam.push(i) 
    } 
    if(e.parameter['checkboxischecked'+i] == 'false') 
    { 
     rows_to_del.push(i) 
    } 
    } 

這樣,我有需要行的索引將被刪除

for (var d=0;d<rows_to_del.length;++d) 
    { 
    Logger.log(rows_to_del[d]) 
    tarhely_table.removeRow(rows_to_del[d])   
    } 

我得到一個「值無效:行」的錯誤。我試過parseInt(rows_to_del [d]),結果相同。我不想創建一個新表,而是刪除用戶沒有選擇的行。

+0

你在Logger.log中有什麼(rows_to_del [d])? – 2014-09-26 12:34:13

+0

[1.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0]未選擇的行的行索引(第1行,以索引0,2,3選擇的第2-3行) – bazari 2014-09-26 12:54:27

+0

所以我認爲理論上它應該工作,因爲錶行也是0索引。有13行,如果全部被選中,0-12是在rows_to_del []中。例如,我嘗試了tarhely_table.removeRow(1)。同樣的錯誤。 – bazari 2014-09-26 13:08:21

回答

1

考慮刪除相反的行。

比方說,你的表初步中有3行:

0:紅色
1:綠色
2:藍色

用戶選擇第1行,所以你打算刪除第0行和第2行。

雖然第一次循環,您刪除了第0行。現在您的表爲:

0:綠色
1:藍色

通過循環

第二次,刪除第2行

沒有行2 ....

開始了,讓我們說用戶選擇第2行:藍色,因此您計劃刪除0和1.

第一次通過循環刪除第0行,現在您的表爲:

0:綠色
1:藍色

通過循環第二次,刪除第1行,現在你的表是:

0:綠色

用戶很困惑。

+0

簡單邏輯的精彩演示;-)謝謝 - 我喜歡非常整潔的風格...... upvoted當然。 – 2014-09-27 23:04:58

+0

謝謝Nexus,它工作完美!我在刪除行之前添加了一個排序函數:rows_to_del.sort(function(a,b){return b - a})。 – bazari 2014-09-29 14:05:34

相關問題