Flex 动态生成DataGrid列 & 参数传递
发布时间:2020-12-15 04:34:27 所属栏目:百科 来源:网络整理
导读:?xml version="1.0" encoding="utf-8"?mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()"mx:Script![CDATA[import mx.collections.ArrayCollection;import mx.controls.Alert;import mx.controls.ComboBox;i
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.controls.ComboBox; import mx.controls.DataGrid; import mx.controls.dataGridClasses.DataGridColumn; import mx.events.ListEvent; [Bindable] // 自定义数据源 private var dgDataArr:Array = [{name: "Jon",job: "officer",addnew:'aaaa',age:""},{name: "James",job: "seller",addnew:'bbbb',{name: "Jodon",job: "manager",addnew:'cccc',{name: "Jon",age:"20"},]; var dataGrid:DataGrid = new DataGrid(); private function init():void { var dgData:ArrayCollection = new ArrayCollection(dgDataArr); dgData.filterFunction // 自定义DataGrid控件 dataGrid.x = 10; // X轴坐标 dataGrid.y = 20; // Y轴坐标 dataGrid.editable = false; // 数据项是否能编辑 dataGrid.percentWidth = 100; // 控件宽度 dataGrid.percentHeight = 100; // 控件高度 dataGrid.setStyle("fontSize",14); dataGrid.styleName dataGrid.dataProvider = dgData; // 设置数据源 // 添加监听事件类型与触发函数 dataGrid.addEventListener(ListEvent.ITEM_CLICK,function(event:ListEvent):void{itemClickHandler(event,'你好')}); addChild(dataGrid); // 添加dataGrid控件 var columns:Array = new Array(); var col:DataGridColumn; for ( var i:* in dgDataArr[0] ) { col = new DataGridColumn(i); columns.push(col); } dataGrid.columns = columns; } private function itemClickHandler(e:ListEvent,str:String):void { Alert.show(this.dataGrid.selectedItem.name.toString()+"--"+str); } ]]> </mx:Script> </mx:Application>
前台参考片段 private function executeSelectHandler(event:ResultEvent):void{ this.closeLoading(); var colunmsNamesArr:ArrayCollection = event.result.colunmsNames as ArrayCollection; var dataList:ArrayCollection = event.result.dataList as ArrayCollection; /**动态构造列**/ var dgc:DataGridColumn=new DataGridColumn(); var dgcolumns:Array = new Array(); if(colunmsNamesArr != null && colunmsNamesArr.length > 0){ for (var i:int=0;i<colunmsNamesArr.length;i++){ dgc = new DataGridColumn(); dgc.dataField = colunmsNamesArr[i]; dgcolumns.push(dgc); } } dg.columns = dgcolumns; dg.editable = false; dg.dataProvider = dataList; dg.validateNow(); } public Map<String,List<?>> executeSelect(String sql) throws SQLException{ Map<String,List<?>> rsMap = new HashMap<String,List<?>>(); rsMap.put("colunmsNames",null); rsMap.put("dataList",null); //动态列 List<String> colunmsNames = new ArrayList<String>(); Connection conn = getDBConnection(); Statement statement = conn.createStatement(); ResultSet rs; try { rs = statement.executeQuery(sql); ResultSetMetaData metaData = rs.getMetaData(); while (rs.next()) { for(int i=1;i<metaData.getColumnCount() + 1;i++){ colunmsNames.add(metaData.getColumnName(i).toString()); } rsMap.put("colunmsNames",colunmsNames); break; } List<Object> listEntity = new ArrayList<Object>(); //动态数据 List<Object[]> dataListObj = PaginationUtilsSqlList.initialize(sql,this.genericBaseDAO,"dg"); List<String> colunmsNamesArr = (List<String>) rsMap.get("colunmsNames"); for (int i = 0; i < dataListObj.size(); i++) { Object[] sourceData = dataListObj.get(i); Map<String,String> map = new HashMap<String,String>(); for (int j = 0; j < colunmsNamesArr.size(); j++) { map.put(colunmsNamesArr.get(j),sourceData[j] == null ?"": sourceData[j].toString()); } listEntity.add(map); } rs.close(); rsMap.put("dataList",listEntity); } catch (Exception e) { e.printStackTrace(); }finally{ conn.close(); } return rsMap; } /** * 获取 数据库连接 * @param sql * @return * @throws ClassNotFoundException * @throws SQLException */ private Connection getDBConnection(){ Connection conn = null; try{ Class.forName(driverClassName); }catch(ClassNotFoundException e){ e.printStackTrace(); } try{ conn = DriverManager.getConnection(url,username,password); }catch(SQLException e){ e.printStackTrace(); } return conn; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |