Flex 动态生成DataGrid列 & 参数传递
2012-12-20 10:06
471 查看
<?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.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; }
相关文章推荐
- 演示弹出窗口传递参数,并用参数来动态修改DataGrid的列
- Flex通过Java读取Excel(详细流程)----Excel在客户端(DataGrid动态根据Excel生成)
- flex 多级窗口互调连接oracle动态管理生成动态datagrid
- Delphi中动态生成的button调用onclick如何传递参数
- 演示弹出窗口传递参数,并用参数来动态修改DataGrid的列
- Flex动态生成可编辑的DataGrid
- FLEX4实践—动态生成DataGrid及应用客户化itemRenderer
- js动态生成的标签,点击传递参数到js函数
- Flex中动态生成DataGrid以及动态生成表头
- Flex中如何动态生成DataGrid以及动态生成表头
- flex advanceddatagrid动态生成列
- 一个动态生成表单的checkbox 参数传递解决办法之我解
- silverlight datagrid动态生成列&动态绑定
- flex 多级窗口互调连接oracle动态管理生成动态datagrid
- flex advanceddatagrid动态生成大数据+动态生成列
- Easyui DataGrid动态生成列
- 使用模板ITemplate根据需求动态生成DataGrid
- stuts2后台action动态传递参数给前台JSP
- php对象当参数传递 && php深复制和浅复制