加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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; 
	}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读