2013-02-09 42 views
0

我有一個tableview包含從sqlite中獲取的數據。我可以通過將編輯設置爲true來刪除記錄。錯誤:沒有找到行 - [TiUITableViewProxy insertRowBefore:]

我想在刪除行之前檢查一些條件。如果條件爲真,該行被刪除,然而,當條件爲假,我發現了以下錯誤:

no row found for index. in -[TiUITableViewProxy insertRowBefore:] (TiUITableViewProxy.m:500)

控制器

table.addEventListener('delete', function(e) { 
    if(some condition){ 
     db.execute("DELETE FROM tbltest WHERE rowid ='" + e.source.rowid + "'"); 
    } else { 
     alert('Deletion is not possible'); 
     table.insertRowBefore(e.index, e.row); 
    } 
} 

任何想法?

回答

1

我有一種感覺,表索引不刷新。所以當你在老行索引下查找一行時,它認爲沒有任何內容。

試試這個:

table.addEventListener('delete', function(e) { 
    table.setData(table.data); 
    if(some condition){ 
     db.execute("DELETE FROM tbltest WHERE rowid ='" + e.source.rowid + "'"); 
    } else {    
     alert('Deletion is not possible'); 
     table.insertRowBefore(e.index, e.row); 
     table.setData(table.data); 
    } 
} 

雖然我不知道你使用setData後,你將不鬆e.row。 另一個需要注意的是,如果你要刪除最後一行,這是行不通的。所以檢查行的索引,比較行長度,如果它更大,只需追加行。因此,代碼變得

table.addEventListener('delete', function(e) { 
    table.setData(table.data); 
    if(some condition){ 
     db.execute("DELETE FROM tbltest WHERE rowid ='" + e.source.rowid + "'"); 
    } else {    
     // below will only work if you have 1 or no explicit sections in the table if you have more, you'll need to iterate through them 
     if (e.index >= table.data[0].rows.length) { 
      table.appendRow(e.row); 
     } else { 
      table.insertRowBefore(e.index, e.row); 
     } 
     table.setData(table.data); 
    } 

我沒有測試過這一點,如果它不工作,希望這將至少設置你在正確的軌道:)

1
table.addEventListener('delete', function(e) { 
    try{ 
     db.execute("DELETE FROM tbltest WHERE rowid ='" + e.source.rowid + "'"); 

     } 
     catch(e) {    
     alert('Deletion error' + e); 
     table.insertRowBefore(e.index, e.row); 
      } 
    }