datagrid 数据库

RHuniSoft 2010-12-28 06:22:57
1.怎样检测datagrid中的数据是否发生变化
2.若变化了怎样提交到数据库,怎样提交某些列,或者全部提交,要用到哪些方法
麻烦详细说说,十分感谢。。。
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
RHuniSoft 2010-12-30
  • 打赏
  • 举报
回复
没事了,已经解决了。。。谢谢啦
duanjingyu 2010-12-29
  • 打赏
  • 举报
回复
一楼的办法可行
leemiki 2010-12-29
  • 打赏
  • 举报
回复


楼主看懂代码了吗??

Flex端只是调下后台的方法即可 ro.后台方法(dataChangeColl);

剩下都是后台的事情!!Flex端就到此为止~~~
RHuniSoft 2010-12-29
  • 打赏
  • 举报
回复
-------调用后台方法传入dataChangeColl,后台遍历集合根据主键执行update操作
能把这部分代码写一下吗,十分感谢
leemiki 2010-12-28
  • 打赏
  • 举报
回复
上面的程序还有个效率上的问题(闲麻烦可以忽略)

如果用户在改了数据后又改回去的话,那条数据对象还是会被插入到dataChangeColl中

所以严谨的做法是将最初的dataProvider做一个备份(new一个新的集合将元素插入),再add到

dataChangeColl时候遍历一下这个备份集合,这样的数据库后台操作效率是最高的
leemiki 2010-12-28
  • 打赏
  • 举报
回复
监听ArrayCollection(dataProvider)的collectionChange事件即可

效率上当然是只对改变的提交~!!

不多说直接看代码:

<?xml version="1.0"?>
<!-- DataGrid control example. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()">
<mx:Script>
<![CDATA[
import mx.events.PropertyChangeEvent;
import mx.events.CollectionEventKind;
import mx.controls.Alert;
import mx.events.CollectionEvent;
import mx.collections.ArrayCollection;

[Bindable]
private var messColl:ArrayCollection = new ArrayCollection([
{id:1,name:'Christina Coenraets',phone:'555-219-2270',email:'ccoenraets@fictitious.com',active:'true'},
{id:2,name:'Joanne Wall',phone:'555-219-2012',email:'jwall@fictitious.com',active:'true'},
{id:3,name:'Maurice Smith',phone:'555-219-2012',email:'maurice@fictitious.com',active:'false'},
{id:4,name:'Mary Jones',phone:'555-219-2000',email:'mjones@fictitious.com',active:'true'}
]);

private var dataChangeColl:ArrayCollection = new ArrayCollection;//已改变的数据对象集合

private function init():void{
messColl.addEventListener(CollectionEvent.COLLECTION_CHANGE,dataChangeHandler);
}

private function dataChangeHandler(event:CollectionEvent):void{
event.kind = CollectionEventKind.UPDATE;
var obj:Object = (event.items[0] as PropertyChangeEvent).source;
if(dataChangeColl.getItemIndex(obj)==-1){
dataChangeColl.addItem(obj);
}
}

private function getChangeData(event:MouseEvent):void{
var str:String="";
if(dataChangeColl.length==0){
Alert.show("暂无数据更改!","提示框");
}else{
//调用后台方法传入dataChangeColl,后台遍历集合根据主键执行update操作
}
}
]]>
</mx:Script>

<mx:Panel title="DataGrid Control Example" height="100%" width="100%"
paddingTop="10" paddingLeft="10" paddingRight="10">

<mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{messColl}" editable="true">
<mx:columns>
<mx:DataGridColumn dataField="name" headerText="Name" editable="true"/>
<mx:DataGridColumn dataField="phone" headerText="Phone" editable="true"/>
<mx:DataGridColumn dataField="email" headerText="Email" editable="true"/>
</mx:columns>
</mx:DataGrid>
<mx:Button label="已改改变数据源" click="getChangeData(event)"/>
</mx:Panel>
</mx:Application>





4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧