Adobe Flex:尝试验证数据网格输入时出现错误#1034
Posted
技术标签:
【中文标题】Adobe Flex:尝试验证数据网格输入时出现错误#1034【英文标题】:Adobe Flex: Error#1034 in trying to validate datagrid input 【发布时间】:2012-01-06 03:00:40 【问题描述】:为了验证我的数据网格中的输入,我正在使用一个函数(取自 Adobe 示例)。
这就是网格的运行方式:
<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的主要内容,如果未能解决你的问题,请参考以下文章
在adobe flex / air中扩展组件时,invalidateProperties(),invalidateSize()和invalidateDisplayList()函数做了什么?