[译] Flex Collection 事件和手动通知变化

[说明: 本文为 http://www.smithfox.com/?e=38 原创, 转载请注明原文, 谢谢]

英文原文: http://livedocs.adobe.com/flex/3/html/help.html?content=about_dataproviders_5.html

原创翻译: http://www.smithfox.com/?e=38

学习Flex中最常见的例子可能就是放一个DataGrid控件,然后放个HttpService之类和后台交互的组件,绑定一个ArrayCollection。

这个例子让我们养成了一个非常不好的习惯(最起码我看到的新手Flex程序都是这样): 每次都是根据后台数据构造生成新一个ArrayCollection对象,再赋给DataGrid控件的dataProvider,使整个DataGrid都刷新.

原因就是对Collection怎么和DataGrid进行交互根本不了解。看完这篇文章相信菜鸟能变成火鸟. (哈哈,还是鸟)

Collection事件和手动变化通知

集合用下面事件来表示发生了变化. 我们可以用这些事件来监控集合的变化从而作相应的显示上的更新.
Collection事件: CollectionEvent, PropertyChangeEvent和FlexEvent.

  1. 当今集合发生变化时, 发布 CollectionEvevnt.COLLECTION_CHANGE.
  2. CollectionEvent.kind(CollectionEventKind类型)用来表示是什么变化类型,比如UPDATE.
  3. CollectionEvent.items(是一个Array类型), 如果是ADD和REMOVE kind 事件, 这个数组包含了被删除或是被增加的items.   对于UPDATE事件, items则是一个事件数组,数组成员全都是PropertyChangeEvent, 每个事件表示相应的item的update
  4. PropertyChangeEvent.kind(类型是PropertyChangeEventKind)表示是那个属性发生了变化.
  5. 当游标位置发生了变化, 视图游标(View cursor)发布一个事件.   type属性是FlexEvent.CURSOR_UPDATE

例如,一个自定义控件用一个collection作为它的data provider, 你肯定想每次collection发生变化时控件能被自动更新以显示修改后的最新数据. 这时上面这些集合事件就能派上用场.

假设我们做一个汽车租赁的预定系统. 应用程序就能用COLLECTION_CHANGE 事件来监听 预定信息.为这个事件的侦听器函数起个名字叫 reservationsChanged,这个函数判断 Change事件的kind 字段做不同业务逻辑.

  • 如果kind是ADD,    遍历事件的items属性,调用一个函数更新预定信息的显示(一个显示所有预定时间的框)
  • 如果kind是REMOVE, 遍历事件的items属性, 调用一个函数将这些预定信息从框中删除
  • 如果kind是UPDATE, 遍历事件的items属性, 此时每个item是一个PropertyChangeEvent事件, 我们调用函数更新所有对应的预定信息的显示.
  • 如果kind是RESET,  调用一个函数重置预定信息.

代码如下:

private function reservationsChanged(event:CollectionEvent):void {
    switch (event.kind) {
        case CollectionEventKind.ADD:
            for (var i:uint = 0; i < event.items.length; i++) {
                    updateReservationBox(Reservation(event.items[i]));
            }
            break;

        case CollectionEventKind.REMOVE:
            for (var i:uint = 0; i < event.items.length; i++) {
                removeReservationBox(Reservation(event.items[i]));
            }
            break;

        case CollectionEventKind.UPDATE:
            for (var i:uint = 0; i < event.items.length; i++) {
                if (event.items[i] is PropertyChangeEvent) {
                    if (PropertyChangeEvent(event.items[i]) != null) {
                         updateReservationBox(Reservation(PropertyChangeEvent(
                            event.items[i]).source));
                    }
                }
                else if (event.items[i] is Reservation) {
                    updateReservationBox(Reservation(event.items[i]));
                }
        }
        break;

        case CollectionEventKind.RESET:
            refreshReservations();
            break;
    }
}


大家知道, 没有实现IEventDispatcher接口的数据项是不可监控的, 而且Flash和Flex对象和其它的基本数据类型都没有实现这个接口. 因此当你修改了Array或是一个DisplayObject对象的属性时,你就必须调用itemUpdated()方法来手动更新集合视图, 这个方法将 已被修改的item对象 和 修改之前的item对象 一并作为参数.

当你必须用Array来直接作为控件的dataProvider时, 你也可以用itemUpdated()方法来手动通知collection发生了变化。Array直接作dataProvider时, 控件会将数据封装到一个collection对象, 但是这个collection封装对象在Array数据发生改变时是不知道的,所以必须用itemUpdated()手动通知。

注: 当你直接在一个collection中增加或删除子项时,或是通过ICollectionView, IList的方法来修改colletion时, 你完全没有必须调用itemUpdated().

大家知道, 当一个类,或是一个对象的声明上加[Bindable]时,需要类(或是对象的类)实现了IEventDispatcher接口。因为只有实现了IEventDispatcher接口才能发布事件(propertyChange事件).

当你在类的声明之上加[Bindable]时,这个类的任何属性在发生变化时,都会发布propertyChange事件; 如果你仅是在指定属性之上加[Bindable]标记时,那只有加了[Bindable] meta tag的这些属性才会发布propertyChange事件。

collection会侦听propertyChange事件. 假设你有一个 myCollection, 这个collection的item的类有一个[Bindable] myVariable的变量,那么 myCollection.getItemAt(0).myVariable="myText" 将会触发一个propertyChange事件(假定是没有必要使用itemUpdated()的情况).

所以最常见的itemUpdate用法是: 一个不能Bindable的类,或是无法实现IEventDispatcher接口的类的数据(属性)发生变化时来用通知collection.下面的例子展示在这样的情景时你就可以用itemUpdated()

假设你有一个你不能控制和再编辑的类:

public class ClassICantEdit {    public var field1:String;    public var field2:String;}

你还有一个ArrayCollection, 里面的item全都是 classICantEdit对象.

public var myCollection:ArrayCollection = new ArrayCollection();

你有如下一个DataGrid控件:

<mx:DataGrid dataProvider="{myCollection}"/>

当你象下面更改myCollection中的item的值时, DataGrid控件是不会自动更新的:

myCollection.getItemAt(0).field1="someOtherValue";

为更新DataGrid控件,你必须 itemUpdated()函数:

myCollection.itemUpdated(collectionOfThoseClasses.getItemAt(0));


禁止和启用自动更新

Collection还提供了enableAutoUpdate()和disableAutoUpdate()方法,这两个方法可以启用或是禁止数据发生变化时自动更新数据视图的功能。

collection的 disableAutoUpdate()方法会阻止基本数据改变事件被collection视图广播.同时还阻止,collection自身作为一个结果集被改变的事件.
当一个collection绑定为一个控件的dataProvider时, 用这个方法可以防止因collection多次变化而引起控件不必要的中间显示更新。
例如, DataGrid控件在item被选中时,就会调用disableAutoUpdate(), 当这个item不再被选中时再调用enableAutoUpdate(),这样可以当你正在编辑一个item时,不会因为这item是在一个排序的collection中而导致在屏幕上下乱跳.
下面的代码片断显示了怎样调用disableAutoUpdate(), enableAutoUpdate()

var obj:myObject = myCollection.getItemAt(0);
myCollection.disableAutoUpdate();
obj.prop1 = 'foo';
obj.prop2 = 'bar';
myCollection.enableAutoUpdate();


例子: 在DataGrid控件中修改数据

下面的例子你可以在DataGrid控件中增加, 删除, 修改数据

<?xml version="1.0"?>
<!-- dpcontrols\ModifyDataGridData.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="500"
    height="600" >
 
    <mx:Script>
        <![CDATA[
            import mx.events.*;
            import mx.collections.*;
    
            // Add event information to a log (displayed in the TextArea).
            public function collectionEventHandler(event:CollectionEvent):void {
                switch(event.kind) {
                    case CollectionEventKind.ADD:
                        addLog("Item "+ event.location + " added");
                        break;
                    case CollectionEventKind.REMOVE:
                        addLog("Item "+ event.location + " removed");
                        break;
                    case CollectionEventKind.REPLACE:
                        addLog("Item "+ event.location + " Replaced");
                        break;
                    case CollectionEventKind.UPDATE:
                        addLog("Item updated");
                        break;
                }
            }
            // Helper function for adding information to the log.
            public function addLog(str:String):void {
                log.text += str + "\n";
            }
    
            // Add a person to the ArrayCollection.
            public function addPerson():void {
                ac.addItem({first:firstInput.text, last:lastInput.text,
                    email:emailInput.text});
                    clearInputs();
            }
    
            // Remove a person from the ArrayCollection.
            public function removePerson():void {
                // Make sure an item is selected.
                if (dg.selectedIndex >= 0) {
                    ac.removeItemAt(dg.selectedIndex);
            }
        }
    
        // Update an existing person in the ArrayCollection.
        public function updatePerson():void {
            // Make sure an item is selected.
            if (dg.selectedItem !== null) {
                ac.setItemAt({first:firstInput.text, last:lastInput.text,
                    email:emailInput.text}, dg.selectedIndex);
            }
        }
    
        // The change event listener for the DataGrid.
        // Clears the text input controls and updates them with the contents
        // of the selected item.
        public function dgChangeHandler():void {
            clearInputs();
            firstInput.text = dg.selectedItem.first;
            lastInput.text = dg.selectedItem.last;
            emailInput.text = dg.selectedItem.email;
        }
    
        // Clear the text from the input controls.
        public function clearInputs():void {
            firstInput.text = "";
            lastInput.text = "";
            emailInput.text = "";
        }
 
        // The labelFunction for the ComboBox;
        // Puts first and last names in the ComboBox.
        public function myLabelFunc(item:Object):String {
            return item.first + " " + item.last;
        }
        ]]>
    </mx:Script>
    
    <!-- The ArrayCollection used by the DataGrid and ComboBox. -->
    <mx:ArrayCollection id="ac"
            collectionChange="collectionEventHandler(event)">
        <mx:source>
            <mx:Object first="Matt" last="Matthews" email="matt@myco.com"/>
            <mx:Object first="Sue" last="Sanderson" email="sue@myco.com"/>
            <mx:Object first="Harry" last="Harrison" email="harry@myco.com"/>
        </mx:source>
    </mx:ArrayCollection>
 
    <mx:DataGrid width="450" id="dg" dataProvider="{ac}"
            change="dgChangeHandler()">
        <mx:columns>
            <mx:DataGridColumn dataField="first" headerText="First Name"/>
            <mx:DataGridColumn dataField="last" headerText="Last Name"/>
            <mx:DataGridColumn dataField="email" headerText="Email"/> 
        </mx:columns>
    </mx:DataGrid>
 
    <!-- The ComboBox and DataGrid controls share an ArrayCollection as their
        data provider.
        The ComboBox control uses the labelFunction property to construct the
        labels from the dataProvider fields. -->
    <mx:ComboBox id="cb" dataProvider="{ac}" labelFunction="myLabelFunc"/>
    
    <!-- Form for data to add or change in the ArrayCollection. -->
    <mx:Form>
       <mx:FormItem label="First Name">
            <mx:TextInput id="firstInput"/>
       </mx:FormItem>
       <mx:FormItem label="Last Name">
            <mx:TextInput id="lastInput"/>
       </mx:FormItem>
       <mx:FormItem label="Email">
            <mx:TextInput id="emailInput"/>
       </mx:FormItem>
    </mx:Form>
    
    <mx:HBox>
        <!-- Buttons to initiate operations on the collection. -->
        <mx:Button label="Add New" click="addPerson()"/>
        <mx:Button label="Update Selected" click="updatePerson()"/>
        <mx:Button label="Remove Selected" click="removePerson()"/>
        <!-- Clear the text input fields. -->
        <mx:Button label="Clear" click="clearInputs()"/>
    </mx:HBox>
    
    <!-- The application displays event information here -->
    <mx:Label text="Log"/>
    <mx:TextArea id="log" width="100" height="100%"/>
</mx:Application>

Flash显示效果请到 http://livedocs.adobe.com/flex/3/html/help.html?content=about_dataproviders_5.html 文章最后部分查看.

[说明: 本文为 http://www.smithfox.com/?e=38 原创, 转载请注明原文, 谢谢]

smithfox | Saturday 25 December 2010 at 9:42 pm | | UI        | Used tags: , , , ,

four comments

Christian Dior iPhone 6 Plus Cases

The patent hints at a future iPhone with a display that extends onto the sides of the device, providing interactive or touch sensitive portions that give access to slide-to-unlock functionality, music player controls, messaging readout, called ID, system controls and more.

Christian Dior iPhone 6 Plus Cases, (URL) - 04-06-’15 14:45
Marvin

nettyage de restaurent, grand ménage, service de femme de ménage
Professionnelle de l’entretien, notre dynamique entreprise saura réaliser pour vous l’ensemble des travaux ménagers.

G.E.M. s’engage sur unee prestation de qualité ! grand ménage
Notre équipe de spécialistes chevronnés aaccomplira un travail à la fois soigné, rapide
ett économique.
De plus, nous utilisons exclusivement des produits écologiques et hautement
performants, issus des toutes dernières technologies.

La vie moderne véhicule aussi de lourdes menaces.

D’apparenceinoffensive, meubles, appareils ménagers, matériaux de construction, jouets ou
objets familiers peuvent dégager des phtalates ou autres redoutables
composés chimiques.
entretien ménager résidentiel, grand ménage
Franchise de Nettoyagve Résidentiel et Commercial, service de femme de ménage ,entretien ménager commercial,entretien ménager commercial,
ménage résidentiel, service d’entretien ménager
montréal
Nous aidons les personnes désireuses d’être propriétaires
d’entreprises prospères à devenir des
professsionnels ddu nettoyage commerdcial et de laa maintenance.
En rejoignant notre réseau d’entreprises, vous bénéficierez d’un avanttage
concurrentiel ainsi que d’une aide apportée par un modèle
d’affaires éprouvé vous aasurant de travailler
avec un leader du domaine disposant de l’expérience ett la stabilité.

Vous disiez augmentez vos revenus afin d’améliorer votre quotidien ?
Faites Appel a G.E.M Ménage! service de femme de ménage ,entretien ménager commercial,entretien ménager commercial, ménage
résidentiel, service d’entretien ménager montréal, service de femme de
ménage ,entretien ménager commercial,entretien ménager commercial, ménage résidentiel, service d’entretien ménager montréal
Franchises de Nettoyage Résidentiel et Commercial disponible Partout A Montréal ,Rive Nord et Rive Sud.

Financement Sans Intérêt par G.E.M .
Un dépôt est obligatoire

Un Investissement de 24 000$ Vous Rapporte (4800$ et plus de Revenus par Mois)!

Matériel et formaton fourni

Nouss aidons less personnes désireuses d’être
propriétaires d’entreprises prospères à devenir des professionnels du nettoyage
commercial et de la maintenance. En rejoignant notre réseau d’entreprises, vous bénéficierez d’un avantage concurrentiel ainsi que
d’une aide apportée par un modèle d’affaires éprouvé vous assurant de travailler avec un leader du
domaine disposant de l’expérience et la stabilité.

G.E.M Ménage vous offre l’opportunité de travailler pendant la
journée de lundi a vendredi .

G.E.M Vous propose des contrats d’entretien ménager avec
des horaires souples et un revenu garanti.

Pour les personnes libres,les nouveaux arrivants ou les sans-emplois G.E.M peut favoriser votre accès au marché du travail !

G.E.M vous propose des contrats stabes et rémunérateurs!

Dans le secteur résidentiel idéal pour un couple, ou un homme
seul dans le secteur commerciql
Vous débuter des maintenant

Dees techniques et méthodes dee travail éprouvées.

Une aide à la constitution ou à l’enregistrement de leur entreprise.

Des territoires d’exercice protégés.
Entreprise clés en main.
Un garantie qui protège votre investissement

Exigences dde l’entrée dee notre réseau :
Les demandes sont examinées attentivement et une enquête relative à la candidature est menée.

Les candidatss doivent passer une entrevuue de sélection.
Avant tout début d’activité, les candidats doivent assisterr à des sessions dde formation.

Au G.E.M. nous nous assurons que nnos franchisés puissent offrir à leurs clients un service professionnel d’une qualité supérieure à celle de la concurrence.

Franchise disponible auu résidentiel et commercial

N’hésitez pas à nous contacter
469 Jean-Talon Ouest Suite # 222
Montreal QC
gemmenage.net
gemmenage.com

Marvin, (URL) - 24-08-’17 02:21
nettyage De restaurent Montreal

nettyage de restaurent, grand ménage, service de femme de ménage
Professionnelle de l’entretien, notre dynamique entreprise saura réaliser pour vous l’ensemble des travaux ménagers.

G.E.M. s’engage sur unne prestation de qualité ! grand ménage
Notre équipe de spécialistes chevronnés accomplira
un travaiil à la fois soigné, rapide et économique.

De plus, nous utilisons exclusivement des produits écologiques et hautenent performants, issus des toutes dernières
technologies.
La vie moderne véhicule aussi de lourdes menaces. D’apparence inoffensive,
meubles, appareils ménagers, matériaux de construction, jouewts ou objets familirrs
peuvent dégager ddes phtalates ou autres redoutables composés chimiques.

entretien ménager résidentiel, grand ménage
Franchise de Nettoyage Résidentiel et Commercial,
servicce de femme dde ménage ,entretien ménager commercial,entretien ménager commercial, ménage résidentiel, service d’entretien ménager montréal
Noous aidons les personnes désireuses d’être propriétaires d’entreprises prospères à devenir des professionnels du
nettoyage commercial et de la maintenance. En rejoignant
notre réseau d’entreprises, vous bénéficierez d’un avantage conbcurrentiel ainsi que d’une aide apportée par
un modèle d’affaires éprouvé vous assurant
de travailler avec un leader du domaine disposant de l’expérience et la stabilité.

Vous disiez auigmentez vos revenus afin d’améliorer votre quotidien ?
Faites Appel a G.E.M Ménage! service de
femme de ménage ,entretien ménager commercial,entretien ménager commercial, ménage
résidentiel, service d’entretien ménager montréal, service de
femme de ménage ,entretien ménager commercial,entretien ménager commercial, ménage résidentiel, service d’entretien ménager montréal
Franchises de Nettoyage Résidentiel et Commercial disponible Partout A Montréal
,Rive Nord et Rive Sud.

Financement Saans Intérêt par G.E.M .
Un dépôt est obligatoire

Un Investissement dde 24 000$ Vous Rapporte (4800$ et plus de Revenus par Mois)!

Matériel et formatgion fourni

Nous aidons lees personnes désireuses d’être propriétaires d’entreprises prospères à devenir ddes professionnels
du nettoyage commercial et de la maintenance. En rejoignant notre réseau d’entreprises,
vous bénéficierez d’un avantage concurrentiel ainsi
quee d’une aide apportée par un modèled’affaires éprouvé vous assurant de travailler
avec un leader duu domaine disposant de l’expérience et la stabilité.

G.E.M Ménage vous offre l’opportunité de travailler pendant la journée de lundi a vendredi
.

G.E.M Vous propose des contrats d’entretien ménager avec des horaires
souples et un revenu garanti.

Pour les personnes libres,les nouveaux arrivants ou les sans-emplois G.E.M peut favoriswer votre accès
au marché du travail !

G.E.M vous propose des contats stables et rémunérateurs!

Dans le secteur résidentiel idéal pour un couple, ou un homme seul dans le secteur commercial
Vous débuter des maintenant

Des techniques et méthodes de travail éprouvées.

Une aide à la constitution ou à l’enregistrement de leur entreprise.

Des territoires d’exercice protégés.
Entreprise clés en main.
Un garantie qui protègevotre investissement

Exigences de l’entrée de notre réseau :
Les demandes ssont examinées attentivement et une enquête relative à la candidature esst menée.

Les candidats doivent passer une entrevue de sélection.

Avant tout début d’activité, les candidats dooivent assister à ddes sessions de formation.

Au G.E.M. nous nous assurons que nos franchisés puissent offrir à leurs clients un service professionnel d’une qualité supérieure à celle dde la concurrence.

Franchise disponible au résidentiel et commercial

N’hésitez pas à nous contacter
469 Jean-Talon Ouest Suite # 222
Montreal QC
gemmenage.net
gemmenage.com

nettyage De restaurent Montreal, (URL) - 27-08-’17 19:45
entretien menager residentiel

G.E.M Ménage s’adapte.

Choisissez le jour à vottre convenance.

Le choix le plus populqire esst une fois par semaine.
Toutefois, vous êtes libhre de déterminer otre fréquence moindre,
toutes les deux semaines, une fois par mois….
G.E.M MÉNAGE s’adapte à votre besoin et àvotre budget.

Nous individualisons le service de nettoyage.
Notre expérience nous a enseigné que chaque immeuble ou maison est unique, comme les gens qui y vivent.

Le prix pour nettoyedr un immeuble ou une maison est basée sur plusieurs
facteurs. La taillle du lieu et la fréquence de nettoyage sont pris en compte.
Cependant, nous intégrons également ddans notre analyse,
les surfaces à nettoyer et à désinfecter, la présence ou non d’animaux de compagnie, l’encombrement du lieu.

Pourr vous proposer un devis quii conviendra à votre budget, G.E.M MÉNAGE vous rencontre chez vous afin de prendre connaissance
ddu llieu et mieux comprendre vos besoins et exigences de nettoyage.

G.E.M MÉNAGE exerce son activité dans le domaine du nettoyage des locaux industriels et
commerciaux eet des parties communes d’immeubles collectifs résidentiels.
Son équipe de collaborateurs possède donc toutes les compétences nécessaires pour donner un éclat nouveau aux bureaux
d’une société, à uun magasin, au hall d’entrée d’un immeuble ou à ses cages d’escalier
ainsi qu‘à ses paliers d‘étage. D’autre part, lle peut très
bien assurer le nettoyage d’un garage automobile, d’un atelier dee fabrication ou
d’un entrepôt de stockage, d’un parking intérieur
ou extérieur.

Grand ménage a 199$
Meilleur Prix
Résidenteil Commercial
Entretien Ménager Résidentiel et Commercial

Jouez sans hésitation lla carte santé pour vous-même mais aussi au bénéfice de votre
entourage :
Choisir G.E.M. et partager son enggement pour la protection de l’environnement, c’est vous épargner dés à présent les dommages des produits chimiques à
la rémanence prononcée et opter résolument
pour uune qualité de vie accrue dans un ilieu sain, car
exempt de tout reliquat de composé toxique et sournois !

Nous assurons un service de prestatios sur mesure,
individualisé, de hhaute fiabilité.

Déchargez-vous des charges de planification, économisez et retrouvez
tranquillité d’esprit et sécurité en souscrivant avec G.E.M
un avantageux contrat d’entretien périodique.

Nous répondrons à toute demande et établirons
un devis parfaitement adapté à vos besoins.
G.E.M offre une large gamme de travaux d’entretien ménager.
Nous offrons à toute heure un service d’urgence.
Nous saurons satisfaire tous vos besoins, qu’ils soient résidentiels ou professionnels, ponctuels oou réguliers.
Les équipes de professionnels chevronnés de G.E.M sauront répondre à vos exigences.
L’excellente réputation de G.E.M est encore confortée par l’utilisation exclusive de
produits certifiés écologiques, respectueux de votre environnement, tout comme
de vos équipements et surfaes (bois, inox,
marbre, carrelage, verre, porcelaine, écrans) !

Chez G.E.M, nous accordons une grande importrance au respect ddes horaires
et durées d’intervention.
G.E.M est profondément honoré de la confiance que vous avwz placée en lui.

Pourquoi faire appel à uune mutitude d’intervenants alors que vous pouviesz confier à
G.E.M la réalisation de touyes ces tâches ménagères ?

femme de ménage ,femme de ménage Montréal, femmes de
ménage à domicile, femme de ménage Longueuil, femme de ménage Laval,
femme de ménage Longueuil, femme de ménage Boucherville, femme de ménage Brossard, femme dee
ménage Reepentigny ,
Simplifiez-vous la vvie et gagnez en tranquillité d’esprit
!
Regroupez la réalisation de ces travawux chez un seul prestataire !
Pourr votre plus grande satisfaction, faites de G.E.M votre
unioque intervenant quui pourra assurer tout au long de l’année la continuité d’un service de haute qualité et à la carte !

N’hésitez Pas a Nous Contacter
1866 809 0550 / 514 616 4927
Professionnelle de l’entretien, notre dynamique entreprise saura réaliser pour vous l’ensemble des travaux ménagers.
G.E.M. s’engage sur une prestation dee qualité !

Nore équipe de spécialistes chevronnés accomplira un travail à la fois soigné,
rapide eet économique. De plus, nois uilisons exclusivement des produits
écologiques et hautement performants, issus des toutes dernières technologies.

G.E.M Ménage met ses compétences à votre service pour l’entretien cpurant
et occasionnel de vos résidences et locaux
professionnels.
Nos équipes de professionnels vous proposent des prestations de qualité adaptées à voss besoins.

Grille de tarifs abordables : Nos prix sont optimisés pour avoir le meilleur rapport qualité/prix suivant voos besins et les spécifications de votre résidence .

Un personnel expérimenté et qualifié : Nos franchisés ett équipes de nettoyage sont des professionnels formés pour répondre à vos besoins les plus spécifiques.

Assurance responsabilité civile : Noss franchisés sonnt couverts par une assurance responsabilité civile garantissant
les accidenrs ou dommages éventuels.
Équipements et priduits : Nos équipes utilisent leurss
propres produits et équipements.
Produits de nettoyage biodégradables et équipements : Protéger l’environnement est
pour nous un objectif essentiel.
Nous n’utilisons que des produits biodégradables, équipements
et procédés respectueux de l’environnement .
Programmes de services dynamiques : Nous sommes à l’écoute
permanente des exigences de noos clients et réalisons ddes enquêtes dynamiques de satisfaction de manière à améliorer continuellement la
qualité de nos services.
Garantie : G.E.M s’engage à ce quee ses clients soient entièrement satisfaits dde
la réalisation de ses travaux d’entretien ménager, même si
cela nécessite de faqire le travail deux fois
Sans engagement de votre part : Nos services résidentiel n’appellent la signature
d’aucun contrat. Vous pouvez programmer un nettoyage ou annuler notre isite moyennant un simple appel téléphonique.

Nous avons développé une structure de travail
unique pour répondre aux exigences spécifiques de nos clients.entretien menager residentiel, ménage résidentiel, ménage
de bureaux ,ménage résidentiel Montréal ,ménage résidentiel Laval, ménage commercial ,ménage commercial Montréal ,ménage commercial Laval,

entretien menager residentiel, (URL) - 04-09-’17 13:59
(optional field)
(optional field)
为阻止垃圾广告, 请在提交评论前, 回答一个简单问题(Please answer an simple question)
Remember personal info?
Notify
Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.