Как динамически обновлять список при удалении элемента из базы данных - PullRequest
0 голосов
/ 26 февраля 2011

У меня есть список, который отображает содержимое базы данных SQlite, которую я создал.Однако, когда я запускаю функцию для удаления одного из выбранных пользователем элементов из базы данных, элементы все еще отображаются, пока я не обновлю представление (прямо сейчас, нажав «home» и снова войдя в представление).Как я могу получить список для автоматического обновления, когда пользователь удаляет элемент?

Вот моя функция удаления и код списка:

protected function getAllcards():void   // retrieve the cards from the DB and display
        {
            var stmt:SQLStatement = new SQLStatement();
            var conn:SQLConnection = new SQLConnection();
            stmt.sqlConnection = conn;
            conn.open(File.applicationStorageDirectory.resolvePath("FlashCards.db"));
            stmt.text = "SELECT cTitle FROM cardItems";
            stmt.execute();
            myCardsList.dataProvider = new ArrayCollection(stmt.getResult().data);

        }

        protected function myCardsList_creationCompleteHandler(event:FlexEvent):void  //executed when the List completes loading
        {
            getAllcards();
        }



protected function deleteButton_clickHandler(event:MouseEvent):void  // pushed delete button
        {
            if(myCardsList.selectedItem != null)
            {
            var stmt:SQLStatement = new SQLStatement();
            var conn:SQLConnection = new SQLConnection();
            stmt.sqlConnection = conn;
            conn.open(File.applicationStorageDirectory.resolvePath("FlashCards.db"));
            stmt.text= "DELETE FROM cardItems WHERE cTitle = ?";
            stmt.parameters[0] = myCardsList.selectedItem.cTitle;
            stmt.execute();
            refresher();
            }

        }

приватная функция refresher (): void {var stmt: SQLStatement = new SQLStatement ();var conn: SQLConnection = новый SQLConnection ();stmt.sqlConnection = conn;conn.open (File.applicationStorageDirectory.resolvePath ( "FlashCards.db"));stmt.text = "SELECT * FROM cardItems";// ОБНОВИТЬ СПИСОК ЗДЕСЬ?stmt.execute ();myCardsList.dataProvider = new ArrayCollection (stmt.getResult (). data);}

Список:

<s:List id="myCardsList" x="10" y="10" left="0" right="0" top="0" bottom="0" width="1004"
        height="500" 
        creationComplete="myCardsList_creationCompleteHandler(event)" enabled="true">
    <s:itemRenderer>
        <fx:Component>
            <s:MobileItemRenderer label = "{data.cTitle}"/>  // The Application is a mobile app
        </fx:Component>
    </s:itemRenderer>
</s:List>

Спасибо за любую помощь!=)

1 Ответ

0 голосов
/ 26 февраля 2011

Не могли бы вы показать, где вы делаете назначение провайдера данных для myCardsList? Как слепое предположение, может быть, это будет работать:

myCardsList.dataProvider.refresh(); //Normally used to apply a sort or filter function

Shaun

...