在表视图中的钛安卓数据反射

时间:2012-09-06 12:37:12

标签: titanium titanium-mobile titanium-modules

Google API Android 2.3.1,数据库表格中的数据更改未反映在tableview屏幕中,但如果我们重新启动应用程序,则会显示更改,如果我们加载app.js则会显示最近的更改。

任何人都可以帮我解决这个问题吗?

fireEvent("db_update") 

&安培;
  addEventListener('db_update',function(){应该在这里更新表数据}}

2 个答案:

答案 0 :(得分:0)

要更新数据库,首先需要将其删除,然后再安装新数据库。或运行查询以更新当前的查询。

这是我根据属性中存储的版本号更新数据库的方式:

function updateDatabase(version){
    if (version != Ti.App.Properties.getInt('version',0)){
        sb.db.remove();
        sb.db = Ti.Database.install('/lib/db.sqlite','db');
        Ti.App.Properties.setInt('version',version);
    }
}

在应用程序中,在启动时,我运行带有手动键入版本号的函数。每次数据库更改时,您都可以手动更改此编号。

updateDatabase(5);

这当然不反映关于表格内容的定期更新。 (当您对数据库运行常规查询时)。

在这种情况下,您应该自己重建tableview的内容(您有代码填充tableview,重新运行该代码)或找到一种方法来定位您需要使用ID更改的确切行。

答案 1 :(得分:0)

我找到了解决方案,

Ti.App.addEventListener('updatedb', updateData);

这里'updateData'是从数据库获取tableview数据的函数。在 “updateData”函数的底部,为表视图设置数据

i.e)   tableview.setData(data);

然后,您的插入,更新或删除功能应触发'updatedb'功能

即)

function deleteData(recId)  {
    var db = Ti.Database.open(DBNAME);
        db.execute(" DELETE FROM tblName WHERE id IN("+ recId+") ");
        db.close();

    Ti.App.fireEvent('dataupdated');
}

现在,在调用deleteData函数后,你的tableview数据将显示没有删除的记录。