1

我真的坚持这个。我在管理 DateField 的 Datagrid 中设置了一个 Itemrenderer。用户可以直接在数据网格中输入日期和其他值。当他们单击“提交”时,我想在数据库中填充一行,并且为此设置了服务。在数据库中创建了一行,其中包含来自数据网格的所有值,如预期的那样,但是尽管用户输入了一个值,但并未填充日期。下面是一个代码片段:

数据网格

<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,但 trace(item.datf) 只返回“未定义”。我使用了错误的语法吗?

布赖恩

4

1 回答 1

0

您的 itemRenderer 中没有将数据传输回数据对象的函数。但是,DateField 实现了 IDataRenderer 和 IDropInListItemRenderer,所以我怀疑如果您删除 GridItemRenderer 包装器,这将按预期工作。似乎他们已经从 spark datagrid 中删除了 labelFunction(奇怪的是,它有一个 dataTipFunction),因此您可能需要像扩展 GridItemRenderer 一样稍微扩展 DateField 以使其工作。


编辑以回答更多问题,请查看Spark DataGrid 中 labelFunction 的替代品是什么?

于 2012-10-17T17:40:56.860 回答