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 > > > > > > > >

