`
wanfan2008
  • 浏览: 25730 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

理解Repeater组件

    博客分类:
  • Flex
阅读更多

  当你使用Repeater组件时,你所做的就是创建一个MXML容器,此容器为数据源的每个记录重复它的内容。如果你有些弱智,不理解我所说的,那么几分钟之后你就完全理解了。但是在你开始之前,你需要做点铺垫工作。

1.关掉以前的所有文档。我们要用个新的。

2.创建一个新的Flex项目,命名为Chapter8_project。你也可以使用默认的MXML程序名(跟项目名一样)。

你使用Model标签来创建一些短的数据。我们在第六章讨论过Model标签。此处回顾一下,它建立一个典型的XML结构,主要用作测试目的。你通常在其内部放几条记录用来测试。俺在第六章已经说过,它是极少数MXML标签的另类,因为它没有相应的ActionScript类文件。

3.在开始的Application标签下建立如下Model标签:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Model >

<books>

<bookName>The Essential Guide to Dreamweaver CS3</bookName>

<bookName>Foundation Flex for Developers: Data-Driven Applications</bookName>

<bookName>Flash CS3 for Designers</bookName>

</books>

</mx:Model>

</mx:Application>

 

回想一下第六章关于XML的讨论,Flex将XML数据转换成ArrayCollection类型。尽管你在本例中使用了Model标签,但你在其内部创建了一个XML结构来组织数据。因此你需要将这些数据转换成一个ArrayCollection。

我再说一次,我们可以用MXML来表示ActionScript过程,我们在第六章说过。

4.在你刚创建的Model标签结构下添加如下标签:

<mx:ArrayCollection source="{bookData.bookName}"/>

 

本例中的source是重复的节点,也就是Model标签bookData的bookName。因为Model标签将它的内容转换成一个MXML结构,所以你根本不需要关心root,也就是books。此外,必须要用大括号来绑定数据。

现在Model结构被转换成一个ArrayCollection,你准备使用Repeater组件了。

5.使用ArrayCollection创建一个Repeater,名为bookArray,作为dataProvider。你给此Repeater组件一个id,叫做bookRepeater。将它放在刚才定义的ArrayCollection下面:

<mx:ArrayCollection source="{bookData.bookName}"/>

<mx:Repeater dataProvider="{bookArray}">

</mx:Repeater>

 

一旦你建立这个Repeater组件,你所做的就是决定在这个容器中放什么。让我们看个简单的例子。

6.在Repeater结构中,添加一个Label控制器,将它的text属性值设置为Place Book Title Here。

<mx:Repeater dataProvider="{bookArray}">

<mx:Label text="Place Book Title Here"/>

</mx:Repeater>

 

最后需要做的事情就是检查Application标签的layout属性。如果设置为absolute,你就需要自己设置位置。但如果改为vertical,这个练习就很简单了。

你的最终代码如下:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">

<mx:Model >

<books>

<bookName>The Essential Guide to Dreamweaver CS3</bookName>

<bookName>Foundation Flex for Developers:  Data-Driven Applications</bookName>

<bookName>Flash CS3 for Designers</bookName>

</books>

</mx:Model>

<mx:ArrayCollection source="{bookData.bookName}"/>

<mx:Repeater dataProvider="{bookArray}">

<mx:Label text="Place Book Title Here"/>

</mx:Repeater>

</mx:Application>

 

7.运行代码。结果如图8-1。

 8.1 理解Repeater组件(未经许可不得转载) - Adobe—Hitler - Flex Builder 3

图8-1.Repeater组件

 

你可以看到Label控制器在Repeater容器中,为每条记录重复一次。本例中,重复了三次。

8.现在你要更进一步,添加一个Button控制器,label属性设置为Add to Cart。将之放在Repeater容器中,就在Label控制器的下面。

<mx:ArrayCollection source="{bookData.bookName}"/>

<mx:Repeater dataProvider="{bookArray}">

<mx:Label text="Place Book Title Here"/>

<mx:Button label="Add to Cart"/>

</mx:Repeater>

 

9.运行代码,如图8-2。

 8.1 理解Repeater组件(未经许可不得转载) - Adobe—Hitler - Flex Builder 3

图8-2.添加Button控制器的Repeater组件

 

很明显,你不想要你的最终label显示“Place Book Title Here”。你要添加书的实际名字。为了实现这个效果,你需要修改一下你的代码。

 8.1.1 在Repeater组件中传递数据

每次Repeater组件创建一个新的循环,它就推进到Array的下一个元素。Repeater类有两个重要的属性你必须熟悉:currentIndex和currentItem。currentIndex返回所选条目的索引数,以0开始。currentItem返回所选条目的实际数据。这些属性在今天的大多数编程环境中是非常标准的。

如果你打开Repeater类的帮助文档,你会发现这两个条目在properties下罗列出来,如图8-3。

 8.1 理解Repeater组件(未经许可不得转载) - Adobe—Hitler - Flex Builder 3

图8-3.Repeater类属性

 

如你所见,currentIndex返回Repeater组件正在处理的条目的数组索引数。而currentItem返回所处理的条目的实际数据。

让我们看个例子:

1.把Label控制器的text属性调整如下:

<mx:Label text="{bookRepeater.currentItem}"/>

 

此处Label控制器向回调用Repeater组件。它询问Repeater关于currentItem或数据。然后Repeater组件在当前元素中将数据返回到调用者,本例中就是Label控制器的text属性。

2.修改Label组件之后保存并运行你的代码。如图8-4。

 8.1 理解Repeater组件(未经许可不得转载) - Adobe—Hitler - Flex Builder 3

图8-4.数据添加到Label控制器上

 

currentIndex属性返回被Repeater组件处理的元素的索引数,以0开始。当你需要数字时候这个非常有帮助。

3.下一步,你要在Label的text属性中创建一个简单的串联(concatenation)。修改如下:

<mx:Label text="{bookRepeater.currentIndex} {bookRepeater.currentItem}"/>

 

注意此处,跟其它编程语言例如ActionScript,C++,Java等不同,你不需要用+号来建立一个串联。在MXML中,你所做的就是使用这两个调用并且在它们之间放置一个空格。

4.保存并运行程序。如图8-5。

 8.1 理解Repeater组件(未经许可不得转载) - Adobe—Hitler - Flex Builder 3

图8-5.添加了编号的Repeater组件

 

我靠!回想一下,数组以0开始。如果你现在运行程序,我敢用我的左侧睾丸打赌,你肯定不想看到此处的标记以0开始。

5.按照如下步骤修改你的代码就可解决问题:

<mx:Label text="{bookRepeater.currentIndex + 1} {bookRepeater.currentItem}"/>

 

6.再次运行程序,图8-6显示问题搞定了。

8.1 理解Repeater组件(未经许可不得转载) - Adobe—Hitler - Flex Builder 3 

图8-6.Repeater组件中的固定编号

 

Button类以及其它的涉及形状条目的类,都有一个称作getRepeaterItem()的方法(看图8-7)。它跟currentItem功能一样,因为Repeater容器外部的控制器可以调用这个Repeater并可以请求它正在处理的条目。

 8.1 理解Repeater组件(未经许可不得转载) - Adobe—Hitler - Flex Builder 3

图8-7.getRepeaterItem()函数帮助文档

 

*****currentItem不可以用在Repeater组件外部,因为它所引用的条目就是Repeater当前正在处理的。当你看到所有东西都显示时,Repeater已经搞定了,currentItem不可以再访问了。

 

7.添加一个click条目到Button控制器并将event对象传递到一个函数getBookData(),你马上就创建它。

<mx:Button label="Add to Cart" click="getBookData(event)"/>

 

8.在那个块中创建一个Script块和一个函数getBookData()。将event传递给那个函数,类型为Event。

<mx:Script>

<![CDATA[

private function getBookData(evt:Event):void

{

}

]]>

</mx:Script>

 

回想一下event对象的target属性让你访问那个事件(本例中是Button控制器)的广播器(broadcaster)的所有属性和函数。本练习中,你将使用Button的getRepeaterItem()从Repeater组件中得到条目并将这些信息传递到一个Label控制器,此控制器叫做nameLabel,我们马上创建它。

9.在你刚刚创建的getBookData()函数中添加如下代码:

private function getBookData(evt:Event):void

{

nameLabel.text = evt.target.getRepeaterItem();

}

 

10.在Repeater控制器下插入一个Label控制器,其id属性为nameLabel。将fontSize属性设置为14。

<mx:Label fontSize="14"/>

 

完成的代码如下所示:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">

<mx:Script>

<![CDATA[

private function getBookData(evt:Event):void

{

nameLabel.text = evt.target.getRepeaterItem();

}

]]>

</mx:Script>

<mx:Model >

<books>

<bookName>The Essential Guide to Dreamweaver CS3</bookName>

<bookName>Foundation Flex for Developers:  Data-Driven Applications</bookName>

<bookName>Flash CS3 for Designers</bookName>

</books>

</mx:Model>

<mx:ArrayCollection source="{bookData.bookName}"/>

<mx:Repeater dataProvider="{bookArray}">

<mx:Label text="{bookRepeater.currentIndex + 1} {bookRepeater.currentItem}"/>

<mx:Button label="Add to Cart" click="getBookData(event)"/>

</mx:Repeater>

<mx:Label fontSize="14"/>

</mx:Application>

 

11.保存并运行程序。当你点击这三个按钮中的任一个时,你会发现Label控制器应答于book title,如图8-8。

 8.1 理解Repeater组件(未经许可不得转载) - Adobe—Hitler - Flex Builder 3

图8-8.组装上新的Label控制器

 

你现在要把注意力转向如何中从一个XML文件引进你的数据。如你所见,这跟主题有些变化。

分享到:
评论

相关推荐

    flex Repeater标签使用教程

    #### 三、使用Repeater组件 **1. 在MXML中声明Repeater组件** 如前所述,`Repeater`组件必须嵌套在一个Flex容器内。以下是一些关键属性的描述: - **id**: `Repeater`组件的实例名称。 - **dataProvider**: 数据...

    repeater+aspnetpager实现分页

    然后,AspNetPager控件是由WangYiSoft公司开发的一个专门用于ASP.NET的分页组件,它提供了丰富的分页功能,如自定义样式、多种分页模式、动态加载等。AspNetPager的使用方法相对简单,只需在页面上添加控件,并配置...

    操作dataset绑定repeater

    首先,我们需要了解ADO.NET(ActiveX Data Objects .NET),这是.NET框架提供的一组数据访问组件,用于与各种数据库进行交互。它包括诸如SqlConnection、SqlCommand、SqlDataAdapter等类,这些类允许我们连接到...

    数据显示控件Repeater和datalist的用法

    在ASP.NET web开发中,数据绑定控件是用于展示数据集的关键组件,Repeater和DataList就是其中两种常用的控件。它们都允许开发者灵活地自定义数据的展示样式,但各自有着不同的特性和应用场景。 ## Repeater控件 ...

    使用AspNetPager对Repeater控件分页简单小例

    AspNetPager是WebControlLibrary组件库中的一个强大且易于使用的分页控件,适用于各种数据绑定控件,如GridView、Repeater等。 首先,我们需要了解Repeater控件。Repeater是最灵活的数据绑定控件之一,它允许开发者...

    SIMATIC NET AS-Interface Repeater[手册].pdf

    AS-Interface中继器是这一网络中的关键组件,它被用来扩展网络的覆盖范围,提高系统的可靠性,并可能增加网络的容量。 在手册的【描述】部分,我们可以了解到文档的正式名称是“SIMATIC NET AS-Interface Repeater ...

    Ajax读取用户控件中repeater、datalist、listview中的内容并写到页面

    首先,我们要理解这三种数据绑定控件: 1. Repeater:Repeater是最灵活的模板控件,它可以完全自定义数据显示的样式。它没有内置的分页、排序等功能,但可以用于构建复杂的布局。 2. DataList:DataList控件类似于...

    CAN FD Repeater.pdf

    ### CAN FD Repeater知识点概述 #### 一、CAN FD中继器参考设计介绍 本参考设计为隔离式CAN FD中继器,旨在增加两个CAN总线段之间的电气隔离。该设计能够将任一侧的CAN帧转发到另一侧,并且支持CAN FD速度最高可达2...

    gridview和repeater两种控件的增删改查、分页

    在ASP.NET Web Forms开发中,GridView和Repeater是两种常用的数据显示控件,它们在数据绑定和展示方面有着各自的...在实现增删改查和分页功能时,都需要编写一定量的代码,理解控件的生命周期和事件处理机制是关键。

    ajaxpro无刷新,分页更新repeater_GridView数据源.rar

    在ASP.NET中,Repeater和GridView控件是用于显示数据的常用组件。Repeater提供了更大的灵活性,可以自定义模板来展示数据,而GridView则提供了预定义的布局和操作功能,如排序、分页和编辑。在这个案例中,我们将...

    重写Repeater带分页

    首先,我们需要理解`Repeater`控件的工作原理。`Repeater`控件通过模板来显示数据,不提供内置的分页和排序功能。这意味着我们需要自己处理数据源的分页逻辑,通常是在后端数据库查询中完成,或者在数据访问层(DAL...

    web_repeater分页

    "web_repeater分页"是指在Web应用中使用特定组件(如Repeater)实现的分页功能。下面我们将深入探讨这个主题,包括分页的基本概念、Repeater控件的使用以及如何结合分页实现高效的数据展示。 1. **分页基础** - **...

    flex quick starts

    ### 使用Repeater组件 在Adobe Flex开发中,`Repeater`组件是一种非常实用且灵活的工具,用于在界面上重复渲染一系列相似的UI元素。它适用于需要根据动态数据集(如来自WebService的Array对象)或者静态数组来重复...

    QML实现树形组件

    要实现自定义的树形组件,首先我们需要理解QML中的数据绑定和模型视图的概念。数据模型是存储和组织数据的地方,它可以是`ListModel`、`ArrayModel`或其他自定义模型。视图则是展示数据模型的方式,如`TreeView`、`...

    .NET实现Repeater控件+AspNetPager控件分页

    在.NET开发中,Repeater控件和AspNetPager控件是两个非常重要的组件,它们用于创建动态数据展示和分页功能。下面将详细解释这两个控件的使用方法和工作原理。 **Repeater控件** Repeater控件是ASP.NET中一个非常...

    asp.net组件设计

    ASP.NET组件设计是Web开发中的一个重要领域,它涉及到创建可重用、自包含的代码单元,这些单元可以作为网页的一部分进行交互。...通过深入理解组件设计,开发者可以构建出更加灵活、可扩展的Web应用程序。

    asp.net服务器控件与组件开发

    - Web表单控件:如GridView、ListView、Repeater,用于数据展示和操作。 2. 自定义服务器控件: - 控件继承:理解如何通过继承已有的System.Web.UI.WebControls类来创建自定义控件。 - 用户控件(User Control)...

    前端项目-jquery.repeater.zip

    【前端项目-jquery....通过理解和应用`jquery.repeater`,前端开发者可以更高效地创建可重复的表单组件,提升用户在Web应用中的数据录入体验。同时,这个插件的可扩展性和灵活性也为开发者提供了广阔的设计空间。

Global site tag (gtag.js) - Google Analytics