Adobe Flex:尝试验证数据网格输入时出现错误#1034

Posted

技术标签:

【中文标题】Adobe Flex:尝试验证数据网格输入时出现错误#1034【英文标题】:Adobe Flex: Error#1034 in trying to validate datagrid input 【发布时间】:2012-01-06 03:00:40 【问题描述】:

为了验证我的数据网格中的输入,我正在使用一个函数(取自 Adob​​e 示例)。

这就是网格的运行方式:

<mx:DataGrid id="CashGrid" dataProvider="cash" editable="true" itemEditBeginning="allowForEdit(event)"  itemEditEnd="formatData(event);" sortableColumns="false">  
 <mx:columns>  
     <mx:DataGridColumn textAlign="left" dataField="curName" headerText="Currency" />  
     <mx:DataGridColumn textAlign="right" dataField="value" headerText="Value"  >  
 </mx:columns>  
</mx:DataGrid>  

这是来自 AS 部分的函数

  public function formatData(event:DataGridEvent):void
  
     if (event.reason == DataGridEventReason.CANCELLED)
     
      // Do not update cell.
      return;
                 

     var newData:String= TextInput(event.currentTarget.itemEditorInstance).text;

     // Determine if the new value is an empty String. 
     if(newData == "")
               
                        event.preventDefault();
                        TextInput(cashGrid.itemEditorInstance).errorString=
                            "Enter a valid string.";
                        return;
               
   

虽然它在源示例中有效,但在我的示例中,在编辑所述网格时,会弹出一个错误说TypeError: Error #1034: Type Coercion failed: cannot convert mx.controls::TextInput@f093c29 to spark.components.TextInput.

尝试

import mx.controls.TextInput;  

告诉我

Can not resolve a multiname reference unambiguously. spark.components.TextInput.

我想命名空间有些混乱,但我不知道如何使这个工作。 帮助!

谢谢

【问题讨论】:

嗨 Sankaranarayanan,对不起,我想我以某种方式搞砸了评论部分。 allowForEdit(event) 是一个独立的函数,它检查某个标志并在它为真时阻止编辑。它本身可以正常工作(当 formatData(event) 不存在时)。此外,即使我从数据网格定义中完全删除了 itemEditBeginning="..." ,我也会收到错误消息,因此 alowForEdit() 不应该是问题的原因。如果您认为它可能有帮助,我仍然可以添加它。谢谢! 【参考方案1】:

我无法用给定的代码重现错误。它在我这边工作得很好。请将allowForEdit(event) 的代码也发给我。

您使用的是哪个 SDK 版本? 什么是根应用程序命名空间?请粘贴整个应用程序命名空间。

【讨论】:

使用 Flash Builder 4.5 ns.adobe.com/mxml/2009" xmlns:s="library:/ /ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" > 这里是函数allowForEdit(event)私有函数 allowForEdit(event:DataGridEvent) : void if( event.dataField == "value" ) var item:Object = ((event.currentTarget as DataGrid).dataProvider as ArrayCollection)[event.rowIndex]; if( flagIsFinal == 1 ) event.preventDefault(); 您好朋友感谢您的回复。我找到了您的问题的解决方案。只需检查脚本位置中的 textinput 类包是 spark.components.textinput 还是 mx.controls.textinput 如果是 mx.controls 然后将其更改为 spark 的,如果是 spark 然后更改为 mx一个,让我知道结果 导入 mx.controls.TextInput;无法明确解析多名称引用。 spark.components.TextInput。从脚本块中删除 import spark.components.TextInput 行 感谢桑卡尔的回复。我当前的程序,除了这个位之外运行良好,根本没有 textinput 导入。添加 import spark.components.TextInput 会给出相同的运行时错误#1034。添加导入 mx.controls。 TextInput 给出编译时错误“无法解析...”。火花导入是否以某种方式自动进入?我目前包括来自 mx.controls 的 DataGrid、Alert 和 dataGridClasses.DataGridColumn;来自 mx.collections 的 ArrayCollection;和一些 mx.events。还有其他想法吗?再次感谢! 解决了!!谢谢桑卡尔,当你说你不能重现错误时,我得到了一个提示。在没有专门导入 TextInput 的情况下,我在代码的其他地方使用了 s:TextInput。如果不合格,TextInput 一定会引起混乱。我刚刚明确命名空间,如下所示,并且一切正常。 var newData:String=mx.controls.TextInput(event.currentTarget.itemEditorInstance).text;呸!再次感谢。

以上是关于Adobe Flex:尝试验证数据网格输入时出现错误#1034的主要内容,如果未能解决你的问题,请参考以下文章

BISON FLEX。提供输入文件时出现意外输出

Adobe Flex数据宽度问题

在adobe flex / air中扩展组件时,invalidateProperties(),invalidateSize()和invalidateDisplayList()函数做了什么?

Flex - 无法在 TitleWindow 内显示数据网格

Flex SDK 安装时出现 MD5 验证错误

仅选择一行后如何更改数据网格中的文本,FLEX