Hi, Adrian,

Wow. That's a doozey of an issue. When you're on the bleeding edge,
you tend to bleed a lot. My recent experience with the ADG wasn't
pretty or pleasant, and I bled a lot. But by posting to this group and
various blogs, I found kind souls who helped and finally, through
trial-and-error, found the solution.

Some thoughts on the problem,
 - Could it be that after the first (and each) delete, you might need
to refresh your dataprovider for the ADG? It might be worth a try.
 - I know the myADG.invalidateDisplayList() helped a lot. It forced
the ADG to fetch the latest data. I overrode the set data() method in
the itemRenderer. No explicit validateDisplayList() method.
 - I also used the myADG.invalidateList() elsewhere when the screen
wasn't refreshing.

As Alex Harui suggested, do a debug build and post the entire stack
trace with the linenumbers here. Good luck :)

Alex

--- In [email protected], Adrian Williams <[EMAIL PROTECTED]> wrote:
>
> Ok, I have spent the morning pouring through the debugging trying to 
> figure out what this error is and am completely stymied. I have been 
> able to determine it has nothing to do with my delete functions...the 
> code never makes it to them anyway...I suspect it may be a bug in the 
> core AdvancedDataGridBaseEx code. The actions that are being done are:
> 
> 1.) A user drags a grouped node off the 6-column ADG to the trash can 
> image on the app control bar...
> 
>             <mx:Image source="{trashImage}" right="80"
buttonMode="true" 
> toolTip="drag a subgroup here to delete them from the project" 
> dragDrop="deleteSubgroupDrop(event)" 
> dragEnter="deleteSubgroupEnter(event)" id="image2"/>
> 
> 2.) my drag manager is listening and accepts the dragEnter:
> 
>             private function deleteSubgroupEnter(evt:DragEvent):void
>             {
>                 var obj:IUIComponent = IUIComponent(evt.currentTarget);
>                 DragManager.acceptDragDrop(obj);
>             }
> 
> 2.)  and then accepts the dragDrop. On the drop, I am throwing an alert 
> box up to confirm that the user wants to do this:
> 
>           private function deleteSubgroupDrop(event:DragEvent):void
>             {
>                 partsToDelete = new Array;
>                 partsToDelete = currentSubgroups.selectedItems;
>                 subgroupToRemove =
currentSubgroups.selectedItem.GroupLabel;
>                 alert.confirm("Are you sure you want to delete this 
> subgroup: '" + subgroupToRemove +
>                  "' from the project?? This cannot be reversed!!", 
> deleteSubgroupAction);
>             }
> 
> 3.)  When it hits the alert box, the code then jumps into the core to 
> render the alert box. The code eventually ends up in the 
> LayoutManager.as code on line 592, function validateDisplayList():void.
> 
> 4.)  The logic steps thru all of the objects that are on the stage and 
> for each of them calls the obj.validateDisplayList(); function. All
goes 
> well until it gets to my ADG. Via the validate leg, it goes to the 
> ADGBaseEx.as code to the function 
> commitEditedItemPosition(coord:Object):void. During the course of this 
> function, the columnIndex is manhandled all over the place. 
Eventually, 
> it gets to line 4406 where it is checking:
> 
>     if(colIndex > lockedColumnCount)
> 
>     and passes this check, stepping to the next line of
> 
>     if (colIndex < horizontalScrollPosition + lockedColumnCount)
> 
>     which fails, then executing a loop against the colIndex.  Once the 
> loop is completed, the final line
> 
>     actualColIndex = 
> absoluteToVisibleColumnIndex(displayToAbsoluteColumnIndex(colIndex));
> 
>     is called, which is on line 7164 of the AdvancedDataGridBaseEx.as 
> code.  Within this function is a single method:
> 
>     return displayableColumns[columnIndex].colNum;
> 
>     As I stepped thru the code, I watched the values.  columnIndex == 6 
> and on the execution of this line, the error is thrown.  When I hover 
> the mouse over the components of the line, I get tooltips on 
> "displayableColumns (Array displayableColumns - 
> mx.controls.AdvancedDataGridBaseEx) and over [columnIndex] (columnIndex 
> = 6).  However, when I hover over the .colNum...I get nothing.  In this 
> case, the error is:
> 
>     TypeError: Error #1010: A term is undefined and has no properties.
>    
>     I am really hoping that someone, especially Alex or the like, can 
> provide some insight to what the heck is happening here because I 
> really, really need to get past this error. 
> 
> Best,
> Adrian
> 
> oneworld95 wrote:
> >
> > What does your delete method look like? Try adding some IF statements
> > to check for null or undefined values before you run the delete. If
> > it's null or undefined, do a return.
> >
> > --- In [email protected] 
> > <mailto:flexcoders%40yahoogroups.com>, Adrian Williams <adrianw@> 
> > wrote:
> > >
> > > All,
> > >
> > > I could really use some help in identifying where even to begin
> > > looking to figure out what's causing this problem.
> > >
> > > I have a ADG that is displaying a GroupingCollection.
> > >
> > > I have an application control bar that has a "trash" image. A user
> > > can drag a node from the ADG and drop it in the trash to delete the
> > node
> > > and all it's children.
> > >
> > > When you initially get into the application and drag the first node
> > > of the tree to the trash, the delete fires correctly and without
error.
> > >
> > > When you try to drag the (now) first node of the tree into the
> > > trash, I get the following error:
> > >
> > > TypeError: Error #1010: A term is undefined and has no properties.
> > > at
> > >
> >
mx.controls::AdvancedDataGridBaseEx/displayToAbsoluteColumnIndex()[C:\Work\flex\dmv_automation\projects\datavisualisation\src\mx\controls\AdvancedDataGridBaseEx.as:7166]
> > > at
> > >
> >
mx.controls::AdvancedDataGridBaseEx/commitEditedItemPosition()[C:\Work\flex\dmv_automation\projects\datavisualisation\src\mx\controls\AdvancedDataGridBaseEx.as:4426]
> > > at
> > >
> >
mx.controls::AdvancedDataGridBaseEx/updateDisplayList()[C:\Work\flex\dmv_automation\projects\datavisualisation\src\mx\controls\AdvancedDataGridBaseEx.as:1807]
> > > at
> > >
> >
mx.controls::AdvancedDataGrid/updateDisplayList()[C:\Work\flex\dmv_automation\projects\datavisualisation\src\mx\controls\AdvancedDataGrid.as:5924]
> > > at
> > >
> >
mx.controls.listClasses::AdvancedListBase/validateDisplayList()[C:\Work\flex\dmv_automation\projects\datavisualisation\src\mx\controls\listClasses\AdvancedListBase.as:3071]
> > > at
> > >
> >
mx.managers::LayoutManager/validateDisplayList()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:602]
> > > at
> > >
> >
mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:675]
> > > at Function/http://adobe.com/AS3/2006/builtin::apply 
> > <http://adobe.com/AS3/2006/builtin::apply>()
> > > at
> > >
> >
mx.core::UIComponent/callLaterDispatcher2()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:8460]
> > > at
> > >
> >
mx.core::UIComponent/callLaterDispatcher()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:8403]
> > >
> > > This only errors when manipulating the second time you try to
> > delete
> > > the first node. You can delete any of the other nodes, repeatedly,
> > > without error. I suspect there is some kind of out of index problem
> > > happening but the dump gives me no ideas on where to look.
> > >
> > > Anyone?!
> > >
> > > Thanks,
> > > Adrian
> > >
> >
> >
>


Reply via email to