0 0

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

把一个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 />

问题补充:<div class="quote_title">283433775 写道</div><div class="quote_div">能提供部分的代码吗,这样谁都很能定位问题。</div> <br />谢谢你的回复,代码已经发上去了,但格式不太好,没有再编辑功能,可能会看着很累,辛苦了。

问题补充:想使用delete方法时进行删除. <br />不想使用XMLListCollection.removeItemAt方法, <br />因为这个方法无法删除找到子节点进行删除,如:上面的删除NAME子节点.

问题补充:总结了一下: <br />删除DataGrid中的一行的话,datagrid的dataProvider不自动更新. <br />删除DataGrid中的一行中的一个字段的话,datagrid的dataProvider自动更新. <br /> <br />有谁知道原理吗?

问题补充:<div class="quote_title">283433775 写道</div><div class="quote_div">首先,我不能给你个明确的答案,但是我发表一下个人的柑橘: <br /> <br />你的name是dataFiled也就是数据域,你的email也是,你可以试试删除email时触发事件否? <br /> <br />你的emp不是数据域,所以在理论上讲,见车数据变动时不算作事件触发的条件。 <br /> <br />仅供参考。</div> <br /> <br />对于删除一行的的需求有什么解决方案吗? <br />最好是那种自动触发的解决方案(修改DataGrid等.), <br />如果是手动的话,很多地方都要加上处理. <br />谢谢你百忙之中的回复.
2011年8月23日 10:13

2个答案 按时间排序 按投票排序

0 0

采纳的答案

首先,我不能给你个明确的答案,但是我发表一下个人的柑橘:

你的name是dataFiled也就是数据域,你的email也是,你可以试试删除email时触发事件否?

你的emp不是数据域,所以在理论上讲,见车数据变动时不算作事件触发的条件。

仅供参考。

2011年8月23日 11:25
0 0

能提供部分的代码吗,这样谁都很能定位问题。

2011年8月23日 10:17

相关推荐

    BAPI_NETWORK_COMP_CHANGE 修改项目网络组件的BAPI

    ### BAPI_NETWORK_COMP_CHANGE:修改项目网络组件的BAPI #### 概述 在SAP系统中,项目管理(Project Management, PM)是用于管理和控制工程项目的重要工具之一。项目网络则是PM模块中用来规划和控制项目活动的关键...

    用BAPI_PO_CHANGE修改(ME23N)PO出貨日期的方法

    - 在使用`BAPI_PO_CHANGE`修改PO时,需要确保有足够的权限,并且需要了解所修改的数据是否会影响到其他相关的业务流程。 - 对于大型数据集的处理,需要考虑性能问题,避免长时间运行导致系统响应变慢。 - 测试环境与...

    XMLDB.rar_swing_xml_xml search _xml 数据库_xmldb

    XMLDB.rar_swing_xml_xml search _xml 数据库_xmldb是一个关于使用Java Swing构建图形用户界面(GUI)来操作XML数据库的项目。这个项目重点在于XML数据的存储、查询、插入和修改功能,利用XMLDB作为数据库系统。下面...

    change_samefolder_delete_incomplete_data.zip_baddut_批量读取_批量读取文件、

    这里的“change_samefolder_delete_incomplete_data.zip_baddut_批量读取_批量读取文件、”标题暗示了一个针对批量读取文件及处理不完整数据的程序或者脚本,可能用到了某种编程语言如Python或Perl。这个程序的目的...

    XML.rar_dll XML_xml_xml ListCtrl

    SAX则是一种事件驱动的解析方式,只在遇到特定元素时触发回调函数,适合处理大型XML文件。由于描述中没有具体说明使用哪种解析方式,我们可以假设DLL可能实现了这两种解析策略,以适应不同场景的需求。 XML_list...

    delete_repeat_data.rar_点云_点云删除

    在处理点云数据时,一个常见的问题就是如何有效地删除重复数据,以优化存储空间并提高后续处理的效率。标题“delete_repeat_data.rar_点云_点云删除”暗示了这个压缩包包含了一个关于点云数据去重的解决方案。 点云...

    oracle data change notification,支持10.2以上的Oracle版本,速度很快,效率高

    3. **启动通知**:在对注册的表进行DML操作(插入、更新或删除)时,Oracle数据库会自动触发通知机制,将变更信息发送给订阅者。 4. **接收和处理通知**:应用程序接收到通知后,根据通知内容执行相应的操作。例如...

    XML.rar_C Builder_c 读xml

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它以其结构化、自解释性和可扩展性而被广泛应用于软件开发中。C++ Builder 是一个集成开发环境(IDE),专为使用C++语言开发Windows应用程序...

    学生通讯录(采用xml存储数据).zip_XML通讯录_cunchu_xml

    在这个名为“学生通讯录(采用xml存储数据).zip”的压缩包文件中,我们可以看到XML技术在实现学生通讯录系统中的实际应用,包括增加、删除、修改和查询等基本功能。 首先,XML文件的优势在于其自解释性与灵活性。...

    ORACLE操作XML函数

    DELETEXML - 删除节点 此函数用于删除XML文档中的节点。 - **语法**: ```sql DELETEXML(XMLTYPE_instance, XPath_string[, namespace_string]) ``` - **参数**: - `XMLTYPE_instance`:XML数据类型的字段...

    delete_directory_file.rar_DeleteDirectory_delete file

    然而,当我们需要删除一个包含文件和子目录的整个目录时,不能直接使用`DeleteDirectory`,因为这会导致错误。这时我们需要递归地遍历目录,先删除所有子目录和文件,然后再删除空目录。以下是一个简单的递归删除...

    删除数据DeleteData

    当用户在List Control上选择某条数据并执行删除操作时,程序会触发相应的事件处理函数,这正是我们关注的重点——删除数据的逻辑。 接下来,ADO是微软提供的一个接口,用于访问各种数据源,包括SQL Server。它使用...

    delete_sqlite_data.py

    delete_sqlite_data

    oracle_触发器的种类和触发事件

    DML触发器可以在 BEFORE 或 AFTER 触发事件中执行,在执行时可以访问触发事件前的旧数据和触发事件后的新数据。DML触发器可以用于实现数据的完整性和业务逻辑的实现。 DDL触发器是定义在模式上的触发器,由DDL事件...

    delete_data.py

    delete_data

    ABAP中的ALV操作

    - `HANDLE_DATA_CHANGED`: 这个方法处理`DATA_CHANGED`事件,当用户更改数据时触发。 - `UPDATE_DELTA_TABLES`: 更新因用户操作而产生的差异表。 - `GET_DELETED_ROWS`: 获取已删除的行,并将它们存储在一个内部...

    SQL Server中读取XML文件的简单做法

    `OPENXML`是一个返回行集的函数,允许你对XML数据执行JOINs操作,同时可以在不导入数据的情况下进行INSERT、SELECT、UPDATE和DELETE等操作。与`OPENROWSET`不同,`OPENXML`需要先使用`sp_xml_preparedocument`存储...

    删除结点(c语言),入门小程序

    本篇将详细讲解如何用C语言实现删除链表中的特定结点,以及针对入门者的一些编程实践。 首先,我们需要定义链表结点的结构体。在C语言中,这通常包含两个部分:存储数据的变量和指向下一个结点的指针。例如,如果...

    v_delete_dark_x24.xml

    v_delete_dark_x24.xml

    v_delete_red_x24.xml

    v_delete_red_x24.xml

Global site tag (gtag.js) - Google Analytics