用delete删除xml结点时,无法触发DATA_CHANGE事件的问题

问题描述

把一个XML赋给一个DataGrid的dataProvider,然后对XML的结点用DELETE进行删除操作。问题是,有时候删除,可以触发dataProvider的DATA_CHANGE事件,有时候触发不了。请问有谁遇到过这样的问题吗? 问题补充:<br />&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" <br />&nbsp;&nbsp; xmlns:s="library://ns.adobe.com/flex/spark" <br />&nbsp;&nbsp; xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"<br />&nbsp;&nbsp; creationComplete="application1_creationCompleteHandler(event)"&gt;<br />&lt;s:layout&gt;<br />&lt;s:VerticalLayout/&gt;<br />&lt;/s:layout&gt;<br /><br />&lt;fx:Script&gt;<br />&lt;![CDATA[<br />import mx.collections.*;<br />import mx.events.*;<br /><br />public var dataProviderSource:XMLListCollection;<br /><br />protected function insertData_clickHandler(event:MouseEvent):void<br />{<br />trace("before delete:" + dataProviderSource.source.toXMLString());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 删除john的名字,好用<br />delete dataProviderSource.source[0].name[0];<br />// 删除john,不好用<br />//delete dataProviderSource.source[0];<br />trace("after delete:" + dataProviderSource.source.toXMLString());<br />}<br /><br />protected function application1_creationCompleteHandler(event:FlexEvent):void<br />{<br />dataProviderSource = new XMLListCollection();<br />dataProviderSource.addEventListener(CollectionEvent.COLLECTION_CHANGE , dataChangedHandler);<br />dataProviderSource.source = contacts;<br />}<br /><br />private function dataChangedHandler( event:CollectionEvent ):void{<br />trace("aaaaaaaa");<br />}<br /><br />]]&gt;<br />&lt;/fx:Script&gt;<br /><br /><br />&lt;mx:DataGrid id="dg" width="400" height="200" dataProvider="{contacts}"<br /> dragEnabled="true"<br /> dragMoveEnabled="true"<br /> dropEnabled="true"&gt;<br />&lt;mx:columns&gt;<br />&lt;mx:DataGridColumn dataField="name" /&gt;<br />&lt;mx:DataGridColumn dataField="email" /&gt;<br />&lt;/mx:columns&gt;<br />&lt;/mx:DataGrid&gt;<br /><br />&lt;s:Button id="insertData" click="insertData_clickHandler(event)" label="display data" /&gt;<br /><br /><br />&lt;fx:Declarations&gt;<br />&lt;!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 --&gt;<br />&lt;fx:XMLList xmlns="" id="contacts"&gt;<br />&lt;emp&gt;<br />&lt;name&gt;<br />john<br />&lt;/name&gt;<br />&lt;email&gt;<br />hotdust@163.com<br />&lt;/email&gt;<br />&lt;/emp&gt;<br />&lt;emp&gt;<br />&lt;name&gt;<br />mary<br />&lt;/name&gt;<br />&lt;email&gt;<br />mary@163.com<br />&lt;/email&gt;<br />&lt;/emp&gt;<br />&lt;/fx:XMLList&gt;<br /><br />&lt;/fx:Declarations&gt;<br /><br />&lt;/s:Application&gt;<br /><br /><br />在insertData_clickHandler方法中,有两个删除语句,<br />第一个删除name子节点的语句好用,执行完后,DataGrid发生变化。<br />第二个删除emp整个节点的语句不好用,执行完后,DataGrid不发生变化。<br /><br />调查了一下,原因是DataGrid的Data_Change事件没有被触发,<br />但为什么删除name子节点时就可以被触发,删除emp整个节点时就不能被<br />触发呢?谢谢大家了。<br />

解决方案

首先,我不能给你个明确的答案,但是我发表一下个人的柑橘:你的name是dataFiled也就是数据域,你的email也是,你可以试试删除email时触发事件否?你的emp不是数据域,所以在理论上讲,见车数据变动时不算作事件触发的条件。仅供参考。
解决方案二:
能提供部分的代码吗,这样谁都很能定位问题。

时间: 2024-10-31 12:47:38

用delete删除xml结点时,无法触发DATA_CHANGE事件的问题的相关文章

vsto 写 excel 外接程序,如何实现鼠标滑过一个单元格时,触发一个事件?

问题描述 vsto 写 excel 外接程序,如何实现鼠标滑过一个单元格时,触发一个事件? vsto 写 excel 外接程序,如何实现鼠标滑过一个单元格时,触发一个事件?

在Global.asax可以触发那些事件?

Application对象创建和结束时所触发的事件有 Application_Start  Application_End Session对象创建和结束时所触发的事件有 • Session_Start • Session_End 对程序有请求发生时触发的事件有 (按发生顺序排列) • Application_BeginRequest • Application_AuthenticateRequest • Application_AuthorizeRequest • Application_R

[经典面试题]在O(1)时间删除链表结点

[题目] 给定链表的头指针和一个结点指针,在O(1)时间删除该结点.链表结点的定义如下: struct ListNode {     int        value;     struct ListNode*  next; }; 函数的声明如下: void DeleteNode(ListNode* head,ListNode* node); [思路] 这是一道广为流传的Google面试题,能有效考察我们的编程基本功,还能考察我们的反应速度,更重要的是,还能考察我们对时间复杂度的理解. 在链表中

Javascript教程:delete删除对象

在javascript中,我们有时候要使用delete删除对象.但是,对于delete的一些细节我们未必尽知.昨天,看到kangax分析delete的文章,获益匪浅.本文将文章的精华部分翻译出来,与各位分享. 原理 代码类型 执行上下文 激活对象/可变对象 属性特性 内置对象和DontDelete 未声明的赋值 Firebug 困惑 通过eval删除变量 浏览器兼容性 Gecko DontDelete bug IE bugs 误区 'delete'和宿主对象 ES5严格模式 总结 原理 为什么我

实现删除主表数据时, 判断与之关联的外键表是否有数据

问题描述:某个基础信息表,与系统中30多个表存在外键关系,当删除基础数据时,需要判断是否已经被用过,如果用过则更改标志位,如果没有用过则直接删除,如何能很好实现这个处理?最好能够自动适应表的变化 问题解决(SQL Server 2005)-- SQL Server 2005的错误处理容易控制, 因此, SQL Server 2005中可以直接删除, 通过错误处理来确定是否需要更新. -- 示例如下.USE tempdbGO CREATE TABLE m(    id int PRIMARY KE

将XML结点转换成JAVABEAN并存入数据库

xml|数据|数据库|转换 1.概述 我们要将外部系统给的XML文件进行解析,并存入到数据库. 但是我们并没有DTD或者Schema,只有一个WORD格式的说明文档:更离谱的是,XML结点树的结构(即XML结点与XML结点之间的关系)与业务Bean树的结构(即业务Bean与业务Bean的关系)并不完全一致,比如说,从业务角度讲,一只猪有只猪头,而在XML里,却写成了 pig --content --pighead 的三级关系,无端端多了一个content结点! 没有DTD/Schema,结构又不

用XSLT删除XML示例文件中的敏感内容

在处理 XML 文件时,您可能会遇到这种情况:文件中包含敏感数据,而您喜欢的 XML 处理工具又出现了问题,比方说一个 bug.您需要向供应商提供一个引起 bug 的示例文件.当然不能随便发送一个 XML 文件,因为可能是示例文件中的特殊标记造成了问题.您需要有一种方法清除文件中的敏感数据,同时保持文件的特殊结构特征,以便仍然能够说明问题.如本文所述,只要一点 XSLT 技巧就能解决. 消除内容 清单 1 (kill-content.xslt) 中的 XSLT 脚本可以删除所有的文本节点和属性值

C#删除XML节点

本节通过一个实例介绍如何在程序中删除XML文件中的节点.实例运行结果如图1所示. 程序开发步骤: (1)新建一个网站,其主页默认为Default.aspx. (2)在Default.aspx页面中添加一个Xml控件,用来显示XML文件中的内容,然后添加一个TextBox控件和一个Button控件,分别用来输入要删除的XML节点名和执行删除操作. (3)程序主要代码如下. 当单击[删除]按钮时,程序首先判断TextBox1文本框中内容是否为空,如果不为空,则根据TextBox1文本框中内容在XML

通过php删除xml文档内容的方法

 本文实例讲述了通过php删除xml文档内容的方法.分享给大家供大家参考.具体实现方法如下: 第一种情况:删除一个student节点   代码如下: <?php //1.创建一个DOMDocument对象.该对象就表示 xml文件 $xmldoc = new DOMDocument(); //2.加载xml文件(指定要解析哪个xml文件,此时dom树节点就会加载到内存中) $xmldoc->load("class.xml"); //3.删除一条学生student信息记录 /