> If you sort by a column in your example it doesn't work
> anymore either.

Yeah I noticed that too :(

You'll have to use a Sort and ViewCorsor to make this work.
You'll also have to uase callLater in order to set the new selected index after 
removing the selected item.
Tried a few things with the earlier mentioned 
disableAutoUpdate/enableAutoUpdate, but can't seem to get it right with a Sort 
and 
ViewCursor.
Either the selectedIndex gets set properly, but the view (datagrid) isn't 
update properly (the item is visually not selected, but 
tracing dg.selectedIndex returns the correct value), or the datagrid does show 
a selectedItem (visually), but not the correct one.
Using a delay (callLater) fixes that, but then you may run into problems when 
hitting the delete button continously (allthough it 
works fine here).

All in all, I think this is much more complicated than it should be.


The following seems to work:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
    layout="absolute"
    creationComplete="appInit();"
    >

 <mx:Script>
  <![CDATA[

   import mx.utils.ObjectUtil;
   import mx.collections.SortField;
   import mx.collections.IViewCursor;
   import mx.collections.Sort;

   private var fnSort:Sort;

   private function appInit():void {
    trace("Application ::: appInit");
    // create sort on lastname
    var fnSort:Sort = new Sort();
    fnSort.fields=[new SortField("lastname")];
    // apply sort to collection
    ac.sort = fnSort;
    ac.refresh();
   }

   private function deleteClickHandler(evt:Event):void {
    trace("Application ::: deleteClickHandler");
    var index:int = dg.selectedIndex;
    trace("    - index: "+index);
    var item:Object = dg.selectedItem;
    var vc:IViewCursor = ac.createCursor();
    trace("    - cursor: "+vc);
    // move viewcursor to selected dg item
    vc.findFirst(item);
    trace("    - current: "+ObjectUtil.toString(vc.current));
    // remove current item in ViewCursor
    // you'll need to check if item is valid before removing it
    vc.remove();
    ac.refresh();
    callLater(refreshIndex, [index]);
   }

   private function refreshIndex(value:int):void {
    trace("Application ::: refreshIndex");
    // make sure to check if value is valid (not out of bounds)
    trace("    - value: "+value);
    dg.selectedIndex = value;
    trace("    - selectedIndex: "+dg.selectedIndex);
   }

  ]]>
 </mx:Script>

 <mx:ArrayCollection id="ac">
  <mx:Object firstname="Jimi" lastname="Hendrix" dataID="0" />
  <mx:Object firstname="Frank" lastname="Zappa" dataID="1" />
  <mx:Object firstname="Miles" lastname="Davis" dataID="2" />
  <mx:Object firstname="Harry" lastname="Connick Jr." dataID="3" />
  <mx:Object firstname="John" lastname="Coltrane" dataID="4" />
  <mx:Object firstname="Dizzy" lastname="Gillespie" dataID="5" />
  <mx:Object firstname="Charlie" lastname="Parker" dataID="6" />
  <mx:Object firstname="Jimi" lastname="Hendrix" dataID="7" />
  <mx:Object firstname="Frank" lastname="Zappa" dataID="8" />
  <mx:Object firstname="Miles" lastname="Davis" dataID="9" />
  <mx:Object firstname="Harry" lastname="Connick Jr." dataID="10" />
  <mx:Object firstname="John" lastname="Coltrane" dataID="11" />
  <mx:Object firstname="Dizzy" lastname="Gillespie" dataID="12" />
  <mx:Object firstname="Charlie" lastname="Parker" dataID="13" />
 </mx:ArrayCollection>

 <mx:VBox>
  <mx:DataGrid id="dg" dataProvider="{ac}" />
  <mx:Button id="delete_btn" label="delete" click="deleteClickHandler(event)" />
 </mx:VBox>

</mx:Application>


----- Original Message ----- 
From: "m.frigge" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Sunday, December 23, 2007 11:27 AM
Subject: [flexcoders] Re: Select next DataGrid item after one removed


Hrr, this thing is driving me nuts. I found out why it is not working
in my Application. It is because I sort by column as soon as the Data
is loaded. If you sort by a column in your example it doesn't work
anymore either.

How can I fix this?

Greets, Max




--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/flexcoders/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:[EMAIL PROTECTED] 
    mailto:[EMAIL PROTECTED]

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 

Reply via email to