Ah yes, I didn't actually run it, but as I was setting it up I realized that 
you have to send notification to the responders that attached themselves to the 
IPE.  Otherwise the UI is locked up waiting for the item to say that it is 
available.

 

I'll send you something off-list.

 

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Daniel 
Freiman
Sent: Tuesday, October 23, 2007 12:10 PM
To: [email protected]
Subject: Re: [flexcoders] DataGrid not updating when dataProvider is updated

 

My guess would be that it's the ItemPendingError that's screwing something up, 
because I don't know how that error is supposed to be used.

- Dan Freiman

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml 
<http://www.adobe.com/2006/mxml> " layout="vertical" 
applicationComplete="init()">
<mx:Script>
    <![CDATA[ 

        public function init():void {
            dg.dataProvider = new SimpleDocumentList(null);
        }

        public function setLength():void {
            dg.dataProvider.source = new Array(50); 
        }
        
        public function setData():void {
            dg.dataProvider.setItemAt({item1:"Item 1", item2:"Item 2", 
item3:1},0);
        }
    ]]>
</mx:Script> 
<mx:DataGrid id="dg"/>
<mx:Button label="Set Length" click="setLength()"/>
<mx:Button label="Set Data" click="setData()"/>
</mx:Application> 

package
{
    import mx.collections.ArrayCollection;
    import mx.collections.errors.ItemPendingError;

    public class SimpleDocumentList extends ArrayCollection
    {
        public function SimpleDocumentList(source:Array=null) 
        {
            super(source);
        }

        override public function getItemAt(index:int, prefetch:int=0):Object {
            var result:Object = super.getItemAt(index);
            if (result == null) { 
                throw new ItemPendingError("Item Pending");
            }                
            trace(result);
            return result;
        }
    }
}

On 10/23/07, Alex Harui <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > wrote:

Yeah, should've worked.  Something else is going on.  Can you make a simple 
test case?

 

________________________________

From: [EMAIL PROTECTED] ups.com [mailto:[email protected] 
<http://yahoogroups.com> ] On Behalf Of Daniel Freiman
Sent: Tuesday, October 23, 2007 9:53 AM
To: [email protected]
Subject: Re: [flexcoders] DataGrid not updating when dataProvider is updated

 

I'm only overriding one retrieval method, so shouldn't ArrayCollection being 
doing this for me?

- Dan Freiman

On 10/23/07, Dimitrios Gianninas <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> 
> wrote:

You have to make sure your custom ArrayCollection throw the "change" event I 
believe the DG looks for this. (could be another event name, not sure, you will 
need to check the docs)

 

Dimitrios Gianninas

RIA Developer and Team Lead

Optimal Payments Inc.

 

 

________________________________

From: [email protected] [mailto:flexcoders@ yahoogroups.com 
<http://yahoogroups.com> ] On Behalf Of Daniel Freiman
Sent: Tuesday, October 23, 2007 11:04 AM
To: flexcoders
Subject: [flexcoders] DataGrid not updating when dataProvider is updated

I'm not sure if my code has a bug or if I don't understand how the DataGrid is 
supposed to work.

I have a DataGrid with a dataProvider that extends ArrayCollection.  The only 
overridden behavior is that if dataProvider is supposed to return null, it 
throws an ItemPendingError instead. 

Here's psuedo-code for what's going on:
dataGrid.dataProvider = new ArrayCollectionExt(); // works, dataGrid is blank
dataGrid.dataProvider.source = new Array(newLength);  // works, DataGrid gains 
scrollbar and has no values 
dataGrid.dataProvider.setItemAt(objectSource, 0); // dataGrid is not updated.

Am I doing something fundamentally wrong or do I need to track down a bug in my 
code?

Thanks,

- Dan Freiman

AVIS IMPORTANT

WARNING

Ce message électronique et ses pièces jointes peuvent contenir des 
renseignements confidentiels, exclusifs ou légalement privilégiés destinés au 
seul usage du destinataire visé. L'expéditeur original ne renonce à aucun 
privilège ou à aucun autre droit si le présent message a été transmis 
involontairement ou s'il est retransmis sans son autorisation. Si vous n'êtes 
pas le destinataire visé du présent message ou si vous l'avez reçu par erreur, 
veuillez cesser immédiatement de le lire et le supprimer, ainsi que toutes ses 
pièces jointes, de votre système. La lecture, la distribution, la copie ou tout 
autre usage du présent message ou de ses pièces jointes par des personnes 
autres que le destinataire visé ne sont pas autorisés et pourraient être 
illégaux. Si vous avez reçu ce courrier électronique par erreur, veuillez en 
aviser l'expéditeur. 

This electronic message and its attachments may contain confidential, 
proprietary or legally privileged information, which is solely for the use of 
the intended recipient. No privilege or other rights are waived by any 
unintended transmission or unauthorized retransmission of this message. If you 
are not the intended recipient of this message, or if you have received it in 
error, you should immediately stop reading this message and delete it and all 
attachments from your system. The reading, distribution, copying or other use 
of this message or its attachments by unintended recipients is unauthorized and 
may be unlawful. If you have received this e-mail in error, please notify the 
sender. 

 

 

 

Reply via email to