Flex:如何将 S:list 中的 Sqlist 查询绑定到 S:Textarea

Posted

技术标签:

【中文标题】Flex:如何将 S:list 中的 Sqlist 查询绑定到 S:Textarea【英文标题】:Flex : How do bind an Sqlist query at an S:list to an S:Textarea 【发布时间】:2012-10-09 01:03:13 【问题描述】:

在 flex builder 4.6 中,我试图绑定来自 am sql 查询的数据,显示在 <s:List> 和项目渲染器 <s:Textarea>

我的代码如下:

<s:List id="listapagar" x="304" y="276"   borderVisible="false"
        color="#FF0000" dataProvider="dataProvider" enabled="false" fontSize="22"
        fontStyle="italic" fontWeight="bold" labelField="nome" textAlign="center"
        textDecoration="underline">
    <s:itemRenderer>
        <fx:Component>
            <s:ItemRenderer>
            <s:TextArea id="apagar"   text="R$ data.valorapagar" />      
            </s:ItemRenderer>
        </fx:Component>
    </s:itemRenderer>
</s:List>

这里,我的 sql,通过 &lt;s:list&gt; 显示:

protected function buttonX():void
        
            var sqlConnection:SQLConnection = new SQLConnection();
            sqlConnection.open(File.applicationDirectory.resolvePath("testeDb.sqlite"));

            var stmt:SQLStatement = new SQLStatement();
            stmt.sqlConnection = sqlConnection;
            stmt.text = "SELECT * FROM comandatual order by numerodatransacao desc limit 1 ";
            stmt.execute();

            dataProvider = new ArrayCollection(stmt.getResult().data);
        

之后,我尝试获取 s:TextArea id="apagar" 处显示的结果并与另一个文本区域绑定,以执行简单的减算,如下所示:


<fx:Binding source="apagar.text" destination="restroco.text"/>

<fx:Model id="Calculos" >

        <Calculos>
            <!-- Perform a calculation. -->
            <a>(Number(restroco.text)) - 3</a>
            </Calculos>
    </fx:Model>

但是此时,flex返回一个不能让我前进的错误:

1120:访问未定义的属性 apagar。弹性问题


所以,我被卡住了,如果有人想查看我的完整代码,他们在这里:

http://freetexthost.com/srxslotf1x

【问题讨论】:

apagar 仅在您的内联组件(listapagar 的 itemRenderer)范围内已知。您不能简单地在该范围之外访问它; apagar 的实例很多;你会绑定到哪一个?如果您告诉我们您想要达到的目标,也许我可以帮助您解决它。 感谢您的建议,我需要完全绑定 textarea "apagar"。有什么方法可以将数据从那时传输到软件的任何其他部分?他们使用 s:list "listapagar" 的 dataprovider,前提是我可以将 dataprovider 显示到 s:Textarea 中而不是强制显示在 S:list 中,但是我尝试更改组件时出错发生。 对不起。我不太明白你在说什么。 Transferring data to any other part of the software 通常是通过使用事件来完成的。但是,如果您只想在 TextArea 中显示当前选定项目的一些内容,那么您可以简单地绑定到 listapagar.selectedItem 的属性。 &lt;s:Label text="listapagar.selectedItem.valorapagar" /&gt; 您还可以使用outerDocument&lt;fx:Component&gt; 内部访问主文件定义,但是,selectedItem 绝对比让您的渲染器了解周围范围更好。 【参考方案1】:

正如@RIAStar 解释的那样,您的fx:Model 无法访问apagar。除了建议的解决方案,您还可以使用IndexChangeEvent

<fx:Script>
    <![CDATA[
        import spark.events.IndexChangeEvent;

        private var apagarNum:Number = NaN;

        protected function selectionChangedHandler(event:IndexChangeEvent):void
        
            apagarNum = Number(listapagar.selectedItem.valorapagar);
        

    ]]>
</fx:Script>

<fx:Model id="Calculos" >
    <Calculos>
        <!-- Perform a calculation. -->
        <c>(Number(restroco.text)) - 3</c>
        <!-- calcular com valor a pagar -->
        <d>apagarNum - 3</d>
    </Calculos>
</fx:Model>

<s:List id="listapagar" change="selectionChangedHandler(event)" ...>

【讨论】:

以上是关于Flex:如何将 S:list 中的 Sqlist 查询绑定到 S:Textarea的主要内容,如果未能解决你的问题,请参考以下文章

sqlist中的sq代表啥意思

如何将自定义类导入 Flex 中的 mxml 文件? (动作脚本 3)

如何将参数传递给 flex/actionscript 中的事件侦听器函数?

为啥在VC++6.0下用C语言调用引用参数如:void Creat(SqList &L)总是提示&出错?

void create_sq(sqlist &sq,int n)在数据结构中的含义

将颜色添加到 flex 列表中的标签