我真的陷入了这一问题。我已经在管理DateField的DataGrid中设置了一个ItemRenderer。用户可以直接在DataGrid中输入日期和其他值。当他们单击"提交"时,我想在数据库中填充一行,并为此设置了服务。一行是在DB中创建的,其所有值来自DataGrid的所有值,但是尽管用户输入了一个值,但该日期并未填充。以下是代码段:
datagrid
<s:GridColumn dataField="datf" headerText="Period From" rendererIsEditable="true">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer dataChange="updateRenderer()">
<fx:Script>
<![CDATA[
public function updateRenderer():void {
periodFrom.text = outerDocument.dtf1.format(data.datf);
}
private function dateField_labelFunc(item:Date):String {
return outerDocument.dtf1.format(item);
}
]]>
</fx:Script>
<mx:DateField horizontalCenter="0" verticalCenter="0" width="90%" id="periodFrom" labelFunction="dateField_labelFunc"/>
</s:GridItemRenderer>
</fx:Component>
处理程序
protected function createBillResult_resultHandler(event:ResultEvent):void
{
var dataProvider = itemsDg.dataProvider;
var item = null;
for (var i:int = 0; i < dataProvider.length; i++){
item = dataProvider.getItemAt(i);
trace(item.datf);<!--WHAT SHOULD GO HERE-->
billItems.lnid = item.lnid;
billItems.days = item.days;
billItems.ratu = item.ratu;
createBillItemsResult.token = billingService.createBillItems(billItems);
}
}
我以为我可以像对其他项目一样使用dataField属性从itemRenderer访问该值,尽管这些属性不是itemrenderers,而是跟踪(item.datf)只是返回"未定义"。我在使用错误的语法吗?
brian
您的ItemRenderer中没有将数据转回数据对象的函数。但是,DateField实现Idatarender和Idropinlistemrenderer,因此我的怀疑是,如果您删除了GriditeMrenderer包装器,则可以按预期工作。似乎他们已经从Spark DataGrid中删除了LabElfunction(奇怪的是,它具有datatipfunction),因此您可能需要以扩展GridIteMrenderer的方式稍微扩展datefield才能使其正常工作。
编辑要回答进一步的问题,请查看Spark DataGrid中LabFunction的替换是什么?