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