0

Google API Android 2.3.1では、データベーステーブルのデータ変更はテーブルビュー画面に反映されませんが、アプリを再起動すると変更が表示され、app.jsを読み込むと最近の変更が表示されます。

誰かが私がこれを修正するのを手伝ってもらえますか?

fireEvent("db_update") 


addEventListener('db_update'、function(){テーブルデータを更新するためにここにあるべきもの})

4

2 に答える 2

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);

もちろん、これはテーブルの内容の定期的な更新を反映していません。(データベースで通常のクエリを実行する場合)。

その場合は、テーブルビューのコンテンツを自分で再構築するか(テーブルビューを埋めるコードがあり、そのコードを再実行する)、たとえばIDで変更する必要のある正確な行をターゲットにする方法を見つける必要があります。

于 2012-09-06T14:58:36.750 に答える
0

私は解決策を見つけました、

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

ここで「updateData」は、データベースからテーブルビューのデータを取得する関数です。'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関数を呼び出した後、テーブルビューデータに削除されたレコードが表示されなくなります。

于 2012-09-09T06:26:21.220 に答える