flex3高分求助!!请大家说具体点,谢谢了!

2024-11-23 10:31:37
推荐回答(1个)
回答1:

分三个文件,Baiduzd.mxml是主界面,AddStuInfo.mxml是弹出窗口,StuInfo.as是vo类,存储学生信息。
Baiduzd:



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;
}
]]>
















AddStuInfo



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);
}
]]>





















maxValue="30" minValue="15" trigger="{ageinput}" triggerEvent="focusOut" invalid="{flag = false}" valid="{flag = true}"
exceedsMaxError="年龄不能超过30" integerError="请输入整数" lowerThanMinError="年龄不能小于15" negativeError="年龄不能为负数"
invalidCharError="请输入数字"/>


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就是了。代码里有注释如果还不明白再问吧