Flex 动态生成DataGrid列 & 参数传递

来源:互联网 发布:mac如何打开airplay 编辑:程序博客网 时间:2024/05/29 10:11
<?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',age:""},{name: "Jodon", job: "manager",addnew:'cccc',age:""},{name: "Jon", job: "officer",addnew:'aaaa',age:""},{name: "Jon", job: "officer",addnew:'aaaa',age:""},{name: "Jon", job: "officer",addnew:'aaaa',age:""},{name: "Jon", job: "officer",addnew:'aaaa',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.styleNamedataGrid.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; }







原创粉丝点击