网上能找到的资料非常少 能找到这里算不错了 使用2周MecGrid 郁闷14天 最终把项目搞定了.鉴于网上关于此的资源太少,把工作中的部分代码贴部分上来,一解各位痛苦.
一,下面截取的FocusManager很重要,MecGrid的API很烂,形同虚设.使用debug调试,加断点,能查到focusManger等很多属性,截取其中的一些,可以更改它运行时的操作.比如引用的最后焦点,在自己写自定义组件的时候,直接把自定义组件付给此焦点,可以更改MecGrid定义的组件太死问题,下面的例子是在栓剂事件中给TextInput组件加入数字校验,是通过这种方法.另外MecGrid中的组件很多没有id,也加不上,也可以用这种方法获取id或组件,来更改它的属性.
/**
* MecGrid 事件 双击 触发TextInput
* */
private function beginEditCellHandler(event:MecGridEvent):void
{
generate_btn.enabled = false;
save_btn.enabled = false;
if (event.target.CaretCol == 1){
//添加TextInput
mgrid.EditCell(event, CellOp.EDIT_TEXT);
// mgrid.focusManager.lastFocus.restrict="0-9"; //直接加加不上
}
//截取MecGrid的FocusManager获得最后一次焦点事件 是textinput 更改此组件 然后回传给FocusManager
var fM:FocusManager = mgrid.focusManager as FocusManager;
var textInpMgrid:TextInput = mgrid.focusManager.getFocus() as TextInput;
var tI:TextInput = textInpMgrid;
tI.restrict="0-9";
mgrid.focusManager.setFocus(tI);
}
二,MecGrid操作TextInput单元格
private function displayGridEvent(event:MecGridEvent):void{
//1, 获得MecGrid的行数 通过行数 设置orgId
if (event.target.CaretCol == 1){
mgrid.EditCell(event, CellOp.EDIT_TEXT);
}
//此行很重要,是在下一个一个属性试出来的,截获选中行的数据源值.
var orgId:Object = mgrid.get_cell(5,event.edit_rowIndex,2);
//2, 提取选择基础数据Id
var selectedBaseData:Object = baseDateGrid.selectedItem;
if(selectedBaseData == null)
{
return;
}
}
三,页面加载 初始化MecGrid的数据注释说明,其中一些属性可供参考
/**
* 加载MecGrid数据模块,其中初始化无数据,绑定的数据查询到了再生成
* */
private function loadDataProvider():void
{
mgrid.redraw = false;
// mgrid.merge_option = MecGridConst.MERGE_FIXED | MecGridConst.MERGE_PREV;
mgrid.merge_option = MecGridConst.MERGE_FIXED; //合并单元格
// mgrid.spreadSheetStyle = true; //边框行列数
mgrid.SelectionMode = CellOp.SELECTIONMODE_ROW; // 设置选择行还是选择单元格
mgrid.editable = true; //设置表格编辑可用
mgrid.Rows.count = 0;
mgrid.Cols.count = 3;
mgrid.Cols.defaultwidth = 200;
//表头
mgrid.AddRow(0, "考核对象;基础数据项目值;;");
// mgrid.Rows.item(0).width = 60;
mgrid.Rows.fixed = 1;
mgrid.Rows.defaultwidth = 50;
//表数据
mgrid.Cols.item(0).dataField = "@orgName";
mgrid.Cols.item(0).width = 300;
mgrid.Cols.item(1).dataField = "@baseDataValue";
mgrid.Cols.item(1).width = 200;
mgrid.Cols.item(1).editable = true;
mgrid.Cols.item(2).dataField = "@orgId";
mgrid.Cols.item(2).visible = false;
mgrid.treeGridData = true;
mgrid.dataProvider = XML(CairngormModelLocator.getInstance().baseDataYearManageModel.orgXml);
mgrid.redraw = true;
}
.........
另有工作中的MecGrid图文调研报告,择日上传...