您的位置:首页 > 其它

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; 
	}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: