分三个文件,Baiduzd.mxml是主界面,AddStuInfo.mxml是弹出窗口,StuInfo.as是vo类,存储学生信息。
Baiduzd:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.managers.PopUpManager;
import mx.collections.ArrayCollection;
[Bindable]
public var stuInfo:Array = new Array;
private var addMod:AddStuInfo = new AddStuInfo;
//添加学生信息
private function addStu():void{
//用PopUpManager弹出一个添加信息的窗口
addMod = AddStuInfo(PopUpManager.createPopUp(this,AddStuInfo,true));
//居中弹出
PopUpManager.centerPopUp(addMod);
//添加时间监听器,触发方法为add()
addMod.addEventListener("addstu",add);
}
//事件“addstu”的触发方法
private function add(event:Event):void{
//将学生信息加入数据源
stuInfo.push(addMod.stuinfo);
//刷新数据源
dg.dataProvider = stuInfo;
}
]]>
</mx:Script>
<mx:VBox height="100%" width="100%">
<!--存储用户信息的表格,数据源为stuInfo -->
<mx:DataGrid id="dg" width="100%" height="80%" dataProvider="{stuInfo}">
<mx:columns>
<mx:DataGridColumn headerText="姓名" dataField="name"/>
<mx:DataGridColumn headerText="性别" dataField="sex"/>
<mx:DataGridColumn headerText="班级" dataField="classNo"/>
<mx:DataGridColumn headerText="年龄" dataField="age"/>
</mx:columns>
</mx:DataGrid>
<!--添加学生的按钮,点击后触发方法addStu() -->
<mx:Button label="添加学生" id="bt" click="addStu()"/>
</mx:VBox>
</mx:Application>
AddStuInfo
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="
http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300" fontSize="12" showCloseButton="true" close="close()">
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import mx.controls.Alert;
public var stuinfo:StuInfo = new StuInfo;
//检测年龄输入是否正确的开关
public var flag:Boolean = false;
private function add():void{
if(flag){
//获取textinput中的值,存入对象stuinfo中
stuinfo.name = nameinput.text;
stuinfo.sex = man.selected?true:false;
stuinfo.classNo = classinput.text;
stuinfo.age = ageinput.text;
//分发addstu事件,这是一个自定义事件,调用dispatchEvent分发后,会在主页面被主页面捕捉,主页面捕捉到该事件后调用相关方法处理
this.dispatchEvent(new Event("addstu"));
//关闭这个窗口
this.close();
}
else
mx.controls.Alert.show("年龄填写有误");
}
private function close():void{
//调用PopUpManager关闭这个窗口
PopUpManager.removePopUp(this);
}
]]>
</mx:Script>
<mx:VBox height="100%" width="100%">
<mx:HBox>
<mx:Label text="请输入姓名:"/>
<mx:TextInput id="nameinput" />
</mx:HBox>
<mx:HBox>
<mx:Label text="请选择性别:"/>
<mx:RadioButton label="男" id="man" selected="true"/><mx:RadioButton label="女" id="woman"/>
</mx:HBox>
<mx:HBox>
<mx:Label text="请输入班级:"/>
<mx:TextInput id="classinput" />
</mx:HBox>
<mx:HBox>
<mx:Label text="请输入年龄:"/>
<mx:TextInput id="ageinput" />
</mx:HBox>
<mx:Button id="bt" click="add()" label="添加"/>
</mx:VBox>
<!-- 这是一个校验器,用于校验年龄输入是否合法,其中的属性的含义自己查吧,你要的话我可以吧flex的API文档发给你 -->
<mx:NumberValidator id="nv" source="{ageinput}" property="text" domain="int" allowNegative="false"
maxValue="30" minValue="15" trigger="{ageinput}" triggerEvent="focusOut" invalid="{flag = false}" valid="{flag = true}"
exceedsMaxError="年龄不能超过30" integerError="请输入整数" lowerThanMinError="年龄不能小于15" negativeError="年龄不能为负数"
invalidCharError="请输入数字"/>
</mx:TitleWindow>
StuInfo:
package
{
public class StuInfo
{
public function StuInfo()
{
}
public var name:String;
public var age:String;
public var sex:Boolean;
public var classNo:String;
}
}
具体的流程就是,在主页面点击添加学生按钮后弹出一个添加信息的窗口,用户填入信息后点击确定则分发一个事件让主页面捕捉,捕捉到后在主页面中将学生信息存放在表格的数据源中。性别我用的radiobutton,你问题没写明用什么,如果你要下拉框改用combobox就是了。代码里有注释如果还不明白再问吧