DataGrid显示数据库视图数据
我现在有个视图数据,要显示在DataGrid,用Hibernate做的pojo,
不知道是否可以直接绑定到DataGrid中。。
POJO: FlexViewSpBaseDetail.as
- XML code
[Bindable] [RemoteClass(alias="com.jrosion.database.hibernate3.pojo.ViewSpBaseDetail")] public class FlexViewSpBaseDetail { public var id: FlexViewSpBaseDetailId; public function FlexViewSpBaseDetail() { } }
POJO: FlexViewSpBaseDetailId.as
- XML code
[Bindable] [RemoteClass(alias="com.jrosion.database.hibernate3.pojo.ViewSpBaseDetailId")] public class FlexViewSpBaseDetailId { public var pk: String; public var name: String; public var no: String; public var spType: String; public var unitType: String; public var priceMethod: String; public function FlexViewSpBaseDetailId() { } }
为什么我直接用id.name去绑定,数据显示不出,如何将视图的数据绑定到DataGrid,
如果不行,我想就只能用labelFunction函数去做,这样是可以出来。。
但有个问题,我的DataGrid字段比较多,上面的我省略了一些,我看见DataGrid控件也有个labelFunction函数,可否写一个labelFunction函数,放在DataGrid里面,这样就不必要每个DataGridColumn都写一个labelFunction,不知道这样如何去做。。
[解决办法]
DataGrid里面的dataField应该不支持id.name这种的写法。他会去数据里面找data["id.name"]这个数值,而非data.id.name;
你说的写个LabelFunction,在DataGrid上面
从labelFunction参数里面得到dataField,用"."做split,本是这样访问的data["id.name"]改成
data["id"]["name"],这样好处是改动最小,确定如果是可编辑表格,在修改数据时,还是会有问题。会出提示数据没有id.name这个属性,因为表格内部在写入数据的地方,我想还是用data["id.name"]写入的
也可以去掉一层来解决这个问题,每行记录直接是一个FlexViewSpBaseDetailId类型的数据,
如果这样不行的话,在FlexViewSpBaseDetail类里面做一下代理或包装。
比如
public class FlexViewSpBaseDetail
{
public var id: FlexViewSpBaseDetailId;
public function FlexViewSpBaseDetail()
{
}
public function set name(value):void {
if (id == null) return;
id.name = value;
}
public function get name():String {
if (id == null) return null;
return id.name;
}
}
方案应该很多,找适合自己用的吧。
[解决办法]
你的 datagrid 的dataprovider 是一个 FlexViewSpBaseDetailId的arrayCollection 可以直接用datafield name
否则 只能用 lableFunction了
[解决办法]
是的 lableFunction 这个比简单点