实习日志(7):Flex的repeater组件

来源:互联网 发布:命令提示符修复网络 编辑:程序博客网 时间:2024/05/14 19:56

上午在昨天工作的基础上,修改了浏览板报的形式。即把由DataGrid展示的内容改为由panel面板展示,问题的难点在于如何令panel面板将数据库中的数据循环显示出来

——使用repeater组件,可以达到循环显示数据的目的。

实现方法:

 <mx:VBox>     <mx:Repeater id="rp" dataProvider="{lookContent.lastResult.Contents.Content}">     <mx:Panel width="835" height="239" layout="absolute" title="板报标题:{rp.currentItem.title}" fontWeight="bold" fontSize="15" horizontalCenter="25" verticalCenter="10" borderColor="#050505" cornerRadius="20" alpha="1.0"><mx:Label x="0" y="10" text="板报内容:"/><mx:Text x="10" y="42" text="{rp.currentItem.content}" width="795" height="97" alpha="1.0"/><mx:Label x="144" y="163" text="发布人:{rp.currentItem.author}" width="124"/><mx:Label x="435" y="163" text="失效时间:{rp.currentItem.finish}"/></mx:Panel>   </mx:Repeater> </mx:VBox>

显示效果:

 


数据源写法:
 <mx:Repeater id="rp" dataProvider="{lookContent.lastResult.Contents.Content}">


绑定数据进行显示:
text="{rp.currentItem.content}"

 

XML格式
<Contents>
 <Content>
   <id>1</id>
   <title>w</title>
   <content>w</content>
   <start>10/16/2012</start>
   <finish>10/17/2012</finish>
   <author>admin</author>
 </Content>
<Contents>

 即将XML文件送给repeater,令其显示即可。

 

下午研究了在Datarid中增加LinkButton的方法,看了一个博客,终于搞出了通过LinkButton删除DataGrid中一行数据的方法,可惜博客地址当时没记、、、

具体实现:

<!--dataProvider接收HttpService(lookContent)返回的值-->  <mx:DataGrid dataProvider="{lookContent.lastResult.Contents.Content}" width="808" textAlign="center" borderStyle="inset" height="334" id="list" verticalCenter="-10" x="16.5"> <mx:columns><mx:DataGridColumn headerText="板报标题" dataField="title" width="150"/>  <mx:DataGridColumn headerText="失效时间" dataField="finish" width="150"/><!--在该列中(修改板报)添加LinkButton,具体功能没做,明天搞吧-->      <mx:DataGridColumn headerText="修改板报"  dataField="id" width="60" ><mx:itemRenderer>              <mx:Component>                 <mx:LinkButton toolTip="修改板报" click="" icon="@Embed('image/update.gif')">                 </mx:LinkButton>              </mx:Component>             </mx:itemRenderer></mx:DataGridColumn><!--在该列中(删除板报)添加LinkButton-->  <mx:DataGridColumn dataField="id" headerText="删除板报" width="60" ><mx:itemRenderer>               <mx:Component>                 <mx:LinkButton toolTip="删除板报"  click="deletebtn(event)" icon="@Embed('image/delete.gif')">                    <mx:Script>  <![CDATA[  import mx.controls.Alert;  private function deletebtn(event:MouseEvent):void{  outerDocument.deletebtn(event);  }   ]]></mx:Script>                  </mx:LinkButton>                </mx:Component>              </mx:itemRenderer></mx:DataGridColumn></mx:columns>  </mx:DataGrid>

deletebn()调用的外部方法deletebn():

public function deletebtn(event:MouseEvent):void{    deleteContent.send(); }

HTTPService——deleteContent部分

    <!--删除板报--><mx:HTTPService id="deleteContent" url="http://localhost:8080/BlackBoardV1.5/ContentServlet"useProxy="false"method="post" result="deleteHandler(event)">   <mx:request>        <flag>{"delete"}</flag>        <id>{list.selectedItem.id}</id>   </mx:request></mx:HTTPService>

 

运行效果:

删除板报:

 

一些概念性的东东:
selectedItem selectedIndex区别??
SelectedIndex是说被选中项的顺序
而SelectedItem是被选择项本身

 

错误处理:

每天都有错误,啊啊啊,不知道是运气不好还是水平太次,每天放在处理错误上的时间大把大把的。

1、DataGrid中定义的方法不能引用外部的HTTPService id。

解决方法:

在DateGrid中定义内部函数,通过内部函数获取外部的方法和属性。

实现过程中参考了该大神博客:

http://www.cnblogs.com/sange/archive/2012/03/22/2412281.html

2、java.lang.NoSuchMethodError: com.model.ContentDao.deleteContent(I)Z

让我郁闷的一个错误,查了半天,后来重启了Tomcat之后不再报错了、、尴尬

 

原创粉丝点击