将数据从SQLite数据库传递到特定组件

时间:2011-03-25 15:55:21

标签: flex actionscript-3 sqlite data-binding

我在应用程序中有一个sqlite数据库,并坚持如何将从数据库中检索到的数据传递到多个文本框中。我可以将第一个选择传递到组件中,但是当我尝试将第二个数据选择传递到另一个文本框时,我的问题就出现了,同时在第一个文本框中保持前一个选择的数据相同。

基本上,用户选择食谱并将食谱传递到文本框1.然后选择另一个食谱并将食谱传递到文本框2. *如果为问题添加任何内容,则从不同的视图中选择食谱。选择后,视图将返回到文本框所在的位置。

我不是在寻找有人为我编码,而是我会怎么做。我应该能够做到这一点。 =)

非常感谢您提供任何建议。

我的文字组件

<s:Group id="group1" x="412" y="156" width="200" height="206" contentBackgroundAlpha="1.0" >
        <s:TextInput id="tText1" x="22" y="30" width="157" height="25" fontSize="12"
                     text="{data.kTitle}"/>
        <s:TextArea id="iText1" x="11" y="63" width="178" height="133" editable="false" fontSize="12"
                    text="{data.kIngredients}"/>
        <s:Label id="timer1" x="174" y="8" click="timer1_clickHandler(event)" fontSize="13"
                 text="00"/>
        <s:Label x="169" y="7" fontSize="13" text=":"/>
    </s:Group>
    <s:Group id="group2" x="754" y="37" width="200" height="206" visible="false">
        <s:TextInput id="tText2" x="22" y="28" width="157" height="26" fontSize="12"  text="{data.kIngredients}"/>
        <s:TextArea id="iText2" x="10" y="63" width="178" height="133" editable="false" fontSize="12" text="{data.kTitle}"/>
        <s:Label id="timer2" x="176" y="7" click="timer2_clickHandler(event)" fontSize="13" text="00"/>
        <s:Label x="173" y="7" fontSize="13" text=":"/>
    </s:Group>

点击“制作食谱”按钮 - 将食谱数据推回主视图

protected function viewRecipeButton_clickHandler(event:MouseEvent):void  // make recipe button pushed
            {
                if(recipeList.selectedItem != null)
                    navigator.pushView(views.Timer_view, recipeList.selectedItem);
            }

我如何获取SQlite数据

protected function getAllRecipes():void   // get all the recipes from the DB
            {
                var stmt:SQLStatement = new SQLStatement();
                var conn:SQLConnection = new SQLConnection();
                stmt.sqlConnection = conn;
                conn.open(File.applicationStorageDirectory.resolvePath("Recipes.db"));
                stmt.text = "SELECT * FROM kItems WHERE kTitle IS NOT NULL";
                stmt.execute();
                recipeList.dataProvider = new ArrayCollection(stmt.getResult().data);
                conn.close();
            }

1 个答案:

答案 0 :(得分:0)

你想要的是项目渲染器,可能在List或DataGroup中。您需要做的是将数据发送到数组中,将该数组传递给List并让列表显示您需要的信息。在你的事业中,它将是这样的:

 <s:List dataProvider="{recipes}">
   <s:itemRenderer>
      <fx:Component>
         <fx:ItemRenderer>
            <s:TextInput text="{data.kTitle}"/>
            <s:TextArea text="{data.kIngredients}"/>
         </fx:ItemRenderer>
      </fx:Component>
   </s:itemRenderer>
</s:List>