上午在昨天工作的基础上,修改了浏览板报的形式。即把由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之后不再报错了、、