DataGrid的问题

RHuniSoft 2010-12-01 03:15:02
我想生成一个动态行动态列的DataGrid,要求是列(列名、列的数量)的动态的,数据项(数据的的数量)也是动态的,showDataGrid(name:String,colname:Array,data:Array,number:int);我的想法是写如上的函数,name是DataGrid的Id,colname是存放列明的数组,data是存放数据项的二维数组,number是数据项的数量,但是不知道怎么写好,麻烦牛人帮忙实现一下,或者有更好的方法也好,若用XML作为dataprovidor不知可以吧,万分感谢
...全文
111 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
leemiki 2010-12-01
  • 打赏
  • 举报
回复
为了方便测试静态定义了数据源,propColl直接赋值了

在项目中的做法应该是声明实体类Object.as 通过ObjectUtil.getClassInfo(类对象).properties获取

楼主说的dataprovidor它是一个Object类型,当然可以赋予XML~~~~
leemiki 2010-12-01
  • 打赏
  • 举报
回复
MyDataGrid.as

package
{
import mx.collections.ArrayCollection;
import mx.controls.DataGrid;
import mx.controls.dataGridClasses.DataGridColumn;

public class MyDataGrid extends DataGrid
{
public function MyDataGrid()
{
super();
}

//数据源:dataColl 对应属性结合:propColl
public function creatDataGrid(dataColl:ArrayCollection,propColl:ArrayCollection):void{
this.dataProvider = dataColl;
var columnArr:Array = new Array();
for(var i:int=0;i<propColl.length;i++){
var column:DataGridColumn = new DataGridColumn();
column.dataField = propColl[i];
column.headerText = propColl[i];
columnArr.push(column);
}
this.columns = columnArr;
}

private function setDataGridStyle():void{
this.width = 500;
this.height = 300;
}
}
}
leemiki 2010-12-01
  • 打赏
  • 举报
回复
写一个自定义类继承自DataGrid

随便写的一个测试类,参考下

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.utils.ObjectUtil;
import mx.collections.ArrayCollection;

private var arr:ArrayCollection = new ArrayCollection([
{name:"Christina Coenraets",phone:"555-219-2270",email:"ccoenraets@fictitious.com"},
{name:"Joanne Wall",phone:"555-219-2012",email:"jwall@fictitious.com"},
{name:"Maurice Smith",phone:"555-219-2012",email:"maurice@fictitious.com"}]);
private var expensesAC:ArrayCollection = new ArrayCollection( [
{ Month: "Jan", Profit: 2000, Expenses: 1500, Amount: 450 },
{ Month: "Feb", Profit: 1000, Expenses: 200, Amount: 600 },
{ Month: "Mar", Profit: 1500, Expenses: 500, Amount: 300 },
{ Month: "Apr", Profit: 1800, Expenses: 1200, Amount: 900 },
{ Month: "May", Profit: 2400, Expenses: 575, Amount: 500 } ]);

private var dataGrid:MyDataGrid = new MyDataGrid();
private var propColl:ArrayCollection = new ArrayCollection();

private function init():void{
this.addChild(dataGrid);
}

private function clickHandler1():void{
propColl = new ArrayCollection(["name","phone","email"]);
dataGrid.creatDataGrid(arr,propColl);
}

private function clickHandler2():void{
propColl = new ArrayCollection(["Month","Profit","Expenses","Amount"]);
dataGrid.creatDataGrid(expensesAC,propColl);
}
]]>
</mx:Script>
<mx:Button label="个人信息" click="clickHandler1()"/>
<mx:Button label="月信息" click="clickHandler2()"/>
</mx:Application>
RHuniSoft 2010-12-01
  • 打赏
  • 举报
回复
哪位好心人帮忙看看啊,回来再追加分也行啊

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧